Background information here

_for-sale

The simple, open convention for listing domains for sale

Defined within the IETF, on its way to becoming an RFC — already in operational use at the .nl registry since 2022

# Add one DNS TXT record at the "_for-sale" leaf node. That's it. _for-sale.example.com. TXT "v=FORSALE1;furi=mailto:you@email.com"

Why this convention?

No middleman required

A domain being registered doesn't mean it can't be bought. This convention lets a holder signal availability directly, without going through a marketplace.

Instant discovery

A DNS query resolves in milliseconds. Anyone can check a single domain without relying on a third-party listing service.

Works alongside an active domain

The indicator can be added even while the domain is still in use for a website or mail, and toggled on or off at will — or on domains with no web server at all.

No protocol change

It's an operational convention on top of an ordinary TXT record — nothing to implement beyond editing your zone.

How it works

1

Holder adds a "_for-sale" TXT record

In your DNS zone, add a TXT record at _for-sale for the domain. At minimum it must contain the version tag v=FORSALE1; — a content tag is optional but recommended.

2

Interested party queries DNS

Anyone can check with dig _for-sale.example.com TXT. A valid version tag is what marks the record as a genuine "_for-sale" indicator.

3

Direct engagement

Depending on which content tag is present, the interested party gets a URI, phone number, free-text note, or an opaque code meant for a specific processor.

The presence of a valid version tag is itself the signal. Removing the record (rather than setting some "not for sale" value) is how a holder withdraws the listing.

Record format

Every record starts with the literal version tag v=FORSALE1;, optionally followed by exactly one content tag/value pair. A single TXT record may not contain more than one tag/value pair — but multiple TXT records are allowed in the same RRset, each with a different tag.

TagMeaning
v=FORSALE1;Version tag. Fixed literal value, case-sensitive, must be present.Required
fcod=Opaque code with meaning agreed between cooperating parties (e.g. a registry back-end lookup).Optional
ftxt=Free-form, human-readable text.Optional
furi=Exactly one URI for interested parties — typically http, https, mailto, or tel.Recommended
fval=Indicative asking price: an uppercase currency code directly followed by an amount, e.g. EUR999.Optional

Providing at least one content tag is recommended so interested parties have a way to engage — but a record with only the version tag is valid and, per the draft, should be treated as "for sale" with no further detail.

Examples per tag

Version tag only

_for-sale IN TXT "v=FORSALE1;"

ftxt= — free text

_for-sale IN TXT "v=FORSALE1;ftxt=Call for info."

furi= — contact URI

_for-sale IN TXT "v=FORSALE1;furi=https://example.com/fs?d=eHl6" _for-sale IN TXT "v=FORSALE1;furi=mailto:hq@example.com?subject=foo" _for-sale IN TXT "v=FORSALE1;furi=tel:+1-201-555-0123"

fval= — indicative asking price

_for-sale IN TXT "v=FORSALE1;fval=USD750" _for-sale IN TXT "v=FORSALE1;fval=BTC0.000010"

Multiple records in one RRset

_for-sale IN TXT "v=FORSALE1;furi=https://fs.example.com/" IN TXT "v=FORSALE1;ftxt=This domain name is for sale" IN TXT "v=FORSALE1;fval=EUR500"

Optional: pointing to a details file

The draft doesn't define a file format for extended listing details — it only defines the DNS record. If you want to share more than a single content tag can hold, one approach is to publish a file yourself and point to it with a furi= tag:

_for-sale IN TXT "v=FORSALE1;furi=https://example.com/forsale.txt"

The example below is one possible way to structure such a file — it is not part of draft-davids-forsalereg and there is no registered schema for it. Treat it as a suggestion, not a standard.

forsale.txt (illustrative, non-normative)

# Domain for sale Domain: example.com Price: 10000 USD Contact: domains@example.com Notes: Registered since 2010, clean history.

Checking a domain

# Quick DNS check $ dig _for-sale.example.com TXT +short "v=FORSALE1;furi=mailto:domains@example.com"

FAQ

Is this an official standard?

It's an IETF Internet-Draft on the informational track that has cleared IETF review and is now in the RFC Editor's queue, on its way to becoming an RFC. It has already been used operationally at the .nl registry since 2022.

Is this free to use?

Yes. It's just a DNS TXT record — no fees, accounts, or platform involved beyond whatever your DNS provider already charges for hosting your zone.

Do I need a details file as well as the DNS record?

No. The DNS record alone, even with just the version tag, is a valid indicator. A linked file is only useful if you want to share more than a single content tag allows.

How does ownership verification work?

The DNS record itself is the proof: only whoever controls the zone (the domain holder, or someone with delegated DNS access) can create it.

How do I remove my listing?

Delete the "_for-sale" TXT record(s) from your zone. There's no "not for sale" value to set — per the draft, that kind of content is explicitly invalid. The record's presence is the signal, so remove it.

Can I mark a domain as sold?

There's no "sold" tag defined. Once a sale completes (or the domain is no longer for sale for any reason), remove the "_for-sale" record.

Which DNS providers support this?

Any of them — it's a plain TXT record. Cloudflare, Route 53, Google Cloud DNS, and effectively every other DNS provider support TXT records at arbitrary labels.

Get started

Log into your DNS provider, add one TXT record at the "_for-sale" label, done.

# Your DNS record: _for-sale.yourdomain.com. TXT "v=FORSALE1;fval=YOUR_CURRENCYYOUR_AMOUNT"