They have no particular meaning in HTML. Some server-side frameworks, including PHP, use that sort of notation as an indication that they should build up the data in a single server-side object (an associative array in PHP's case). So with PHP, for instance, if you had name="user[email]" and name="user[phone]" and submitted the form, in your PHP code on the server you'd retrieve a single user object from the request and it would have the keys email and phone on it. Or if you had name="tags[]" on multiple inputs, PHP would build an array with all of the values called tags on the request object.