# Bad value “street-address” for attribute “autocomplete” on element “input”: The autofill field name “street-address” is not allowed in this context.

> Canonical HTML version: https://rocketvalidator.com/html-validation/bad-value-street-address-for-attribute-autocomplete-on-element-input-the-autofill-field-name-street-address-is-not-allowed-in-this-context
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

The HTML specification defines specific rules about which `autocomplete` values can be used on which form elements. The `street-address` token is categorized as a "multiline" autofill field because street addresses often span multiple lines (e.g., "123 Main St\nApt 4B"). Since `<input>` elements only accept single-line text, the spec prohibits using `street-address` with them. The `<textarea>` element, on the other hand, naturally supports multiline content, making it the appropriate host for this token.

This matters for several reasons. First, browsers use `autocomplete` values to offer autofill suggestions. When the element type doesn't match the expected data format, browsers may not autofill correctly or may ignore the hint entirely. Second, standards compliance ensures consistent behavior across different browsers and assistive technologies. Third, using the correct pairing improves the user experience — users expect their full street address to appear in a field that can actually display it properly.

You have two approaches to fix this:

1. **Use a `<textarea>`** — If you want the full street address in a single field, switch from `<input>` to `<textarea>`. This is the most semantically correct choice when you expect multiline address data.

2. **Use line-specific tokens on `<input>` elements** — If your form design uses separate single-line fields for each part of the address, use `address-line1`, `address-line2`, and `address-line3` instead. These tokens are explicitly allowed on `<input>` elements.

## Examples

### ❌ Invalid: `street-address` on an `<input>`

```html
<label for="address">Street Address</label>
<input type="text" id="address" name="address" autocomplete="street-address">
```

This triggers the validation error because `street-address` requires a multiline control.

### ✅ Fix: Use a `<textarea>` with `street-address`

```html
<label for="address">Street Address</label>
<textarea id="address" name="address" autocomplete="street-address"></textarea>
```

The `<textarea>` supports multiline text, so `street-address` is valid here.

### ✅ Fix: Use line-specific tokens on `<input>` elements

```html
<label for="address1">Address Line 1</label>
<input type="text" id="address1" name="address1" autocomplete="address-line1">

<label for="address2">Address Line 2</label>
<input type="text" id="address2" name="address2" autocomplete="address-line2">
```

The `address-line1`, `address-line2`, and `address-line3` tokens are single-line autofill fields and are perfectly valid on `<input>` elements. This approach is common in forms that break the address into separate fields for apartment numbers, building names, or other details.

### Summary of allowed pairings

| Token | `<input>` | `<textarea>` |
|---|---|---|
| `street-address` | ❌ Not allowed | ✅ Allowed |
| `address-line1` | ✅ Allowed | ✅ Allowed |
| `address-line2` | ✅ Allowed | ✅ Allowed |
| `address-line3` | ✅ Allowed | ✅ Allowed |

Choose the approach that best fits your form layout. If you prefer a single address field, use `<textarea>` with `street-address`. If you prefer structured, separate fields, use `<input>` elements with the appropriate `address-line` tokens.
