This document proposes a standard format for specifying personal pronouns using DNS TXT records, primarily for personal domains.
domain: A domain name associated with a person, typically used for personal websites or email addresses.pronouns: A set of personal pronouns that a user uses to refer to themselfrecord: A DNS TXT record that contains a single pronoun declaration (pronoun set, wildcard, or none).pronoun set: A set of associated pronouns, such as "she/her", "he/him", "they/them", etc.user: The person whose pronouns are being specified.implementation: A software or service that retrieves and interprets pronoun records from DNS.
The record must be a TXT record at pronouns.<domain>. For example, for the domain example.com, the record would be located at pronouns.example.com. Multiple records may be present to indicate multiple available pronoun sets, their precedence by default follows the selection process defined below, but tags may be used to indicate preference.
The basic syntax for a format is as follows:
record = [ base_record ], [ comment ];
base_record =
| wildcard
| none
| pronoun_set, [ tags ];
pronoun_set = value, "/", value, [ "/", value ], [ "/", value ], [ "/", value ];
tags = ";", tag, { ";", tag }
tag = "preferred" | "plural";
value = value-char, { value-char } ;
value-char = ? any character except "!", "*", ";", "/", "#" ? ;
comment = "#", { any-non-newline-character };
wildcard = "*";
none = "!";The canonical representation of a record's value may contain any character except for "!", "*", ";", "/", "#", and with only lowercase letters. Implementations, however, should normalise input to be lowercase, and should ignore leading or trailing whitespace. Values may have internal whitespace which should not be modified by the implementation.
The canonical representation of the tags component should contain no duplicate or empty tags, but again implementations should expect these and normalise input to remove duplicates and empty tags.
A pronoun set must include a subject (e.g., "she", "he", "they") and an object (e.g., "her", "him", "them") pronoun at minimum. The possessive determiner (e.g., "her", "his", "their"), the possessive pronoun (e.g., "hers", "his", "theirs"), and reflexive pronoun (e.g., "herself", "himself", "themself") are optional. These components must be provided in the order listed above if they are included. Implementations should deduplicate pronoun sets following the deduplication process process.
Some examples of valid and invalid records:
# Valid:
+ she/her
+ he/him/his/his/himself;preferred
+ they/them/their/theirs/themself
+ they/them;preferred;plural
+ that one/that one/that one's
+ *
+ !
+ ze/zir/zir/zirself
# Valid but non-canonical:
+ SHE/HER # -> she/her
+ SHE / HER # -> she/her
+ he/him;;;preferred # -> he/him;preferred
# Invalid:
- she/her/
- she
- they/them/their/theirs/themself/extra
- she/her;unknown-tag
- in!valid/in*validNote that each example here is an isolated example provided grouped for brevity. In practice, a ! record may not be provided with other records and must be the sole record if present, per None Records.
The following tags are defined:
Indicates that this pronoun set is the user's preferred pronoun set. If multiple pronoun sets are tagged with preferred, a record is picked in accordance with the selection process defined below.
Indicates that this pronoun set uses a plural verb agreement (e.g., "are", "were" rather than "is", "was", as used in "they are", "they were"). For simplicity for users, implementations are expected to recognise that "they/them" has a plural verb agreement even if the tag is not present, but the tag may be used to indicate that other pronoun sets are plural in nature.
A wildcard record (*) indicates that the user is open to being referred to using any pronoun set. This is a standalone record, and must not be combined with any other values or tags. Comments are still allowed.
When a wildcard is the only record present, the neutral pronoun set (they/them) is assumed to be the de facto preference.
Other records may be provided alongside a wildcard record to indicate preference. In the case that a wildcard is not the only record:
- If there is one other record, that record has implied preference as the default way to refer to the user.
- If there are multiple other records, the selection process is used to determine which record has preference.
- If there are multiple other records, and one is tagged with
preferred, that record has preference. - If there are multiple other records, and multiple are tagged with
preferred, the selection process is used to determine which record has preference among those tagged withpreferred.
For example:
| Record(s) Present | Preferred Pronoun Set |
|---|---|
* |
Any, default they/them |
*, she/her |
Any, default she/her |
*, she/her, he/him |
Any, default she/her or he/him depending on implementation |
*, she/her;preferred, he/him |
Any, default she/her |
*, she/her;preferred, he/him;preferred, they/them |
Any, default she/her or he/him depending on implementation |
A none record (!) indicates that the user does not wish to be referred to using any pronouns, but would prefer to explicitly be referred to by their name. This is also a standalone record, and must not be combined with any other values or tags. Comments are still allowed.
Implementations should, in the case of certain common pronoun sets defined below, convert the given input into a more correct form. This is to account for common uses of pronoun sets which do not strictly conform to the format defined above, but are widely used.
| Input | Converted To |
|---|---|
| it/its | it/it/its/its/itself |
When multiple pronoun sets are available, and no more specific means of determining priority is available, record preference is left as intentionally undefined behaviour and is left to the implementation to decide. Possible strategies include:
- Selecting the first record returned by the DNS resolver.
- Randomly selecting one of the available records.
- Returning a pseudo-random but consistent selection based on a hash of the domain name.
Implementations should:
- Deduplicate any number of identical records into one.
- Remove strict subsets.
- Apply tags found in strict subsets to their supersets.
- Merge tags found in duplicate records.
For example:
| Record(s) Present | Resulting Pronoun Set |
|---|---|
she/her, she/her |
she/her |
she/her, she/her/hers |
she/her/hers |
she/her;preferred, she/her/hers |
she/her/hers;preferred |
she/her;preferred, she/her;plural |
she/her;preferred;plural |
she/her, she/her/hers;preferred |
she/her/hers;preferred |