Skip to content
Get early access

forward.domains

Forward

Redirect it, park it, or sell it. Every domain you own, over HTTPS.

Some registrar forwarders stop at http://. Forward gives every domain a certificate and a job: send visitors where they meant to go, or show a calm page that parks it, sells it, or points to everything else you own.

Get early accessRead the docs
npm install -g @forward-domains/clinpm i -g @forward-domains/cli

Keep your registrar and your email. Verify ownership, then point DNS.

http://oldproduct.com/pricing
⌑ https://newproduct.dev/pricing

newproduct.dev

newproduct ↗

Pricing

Your site, not ours. Visitors never see Forward.

301 · path and query kept · certificate issued for you

Why Forward

Forwarding should work beyond http://.

https://

Without a certificate, the padlock breaks it.

Browsers try https:// first. When a forwarder has no certificate for your domain, visitors get a warning instead of a redirect.

.dev · .app · .page

Some domains can’t forward at all.

These TLDs only load over HTTPS, so a forwarder without a certificate never gets a chance to redirect them.

per hostname

Portfolios hit a sales call.

Some redirect services count www separately or require a quote for large portfolios. A drawer of parked names ends in “contact us”.Some redirect services count www separately or require a quote for large portfolios.

One request, one hop

A visitor opens

https://oldproduct.com/pricing?ref=x

Answers with a valid certificate for oldproduct.com

301, then lands on

https://newproduct.dev/pricing?ref=x

How it works

Verify ownership. Point DNS. Get HTTPS.

  1. 01 · Add

    Add the redirect.

    From the dashboard or the CLI: the domain, where it goes, and whether it keeps the path. Or bring your existing redirects with fwd import.From the dashboard or the CLI, or bring your existing redirects with fwd import.

    $ fwd add oldproduct.com \
        --to https://newproduct.dev
  2. 02 · Point

    Verify ownership and point DNS.

    An account-bound TXT proof, an A record on the apex and a CNAME on www, at the registrar you already use. Forward spots leftover forwarding, stray records and CAA rules, and tells you what to change.At the registrar you already use. Forward spots leftover forwarding and stray records, and tells you what to change.

    _forward-verify  TXT  [ACCOUNT PROOF]
    @  A  [EDGE IP]
    www  CNAME  edge.forward.domains.
  3. 03 · Verify

    The certificate takes care of itself.

    After ownership and routing checks pass, Forward queues a certificate for the apex and www, and renews it before it expires.Queued after ownership and routing checks pass; HTTPS works once issued, with automatic renewal.

    DNS ✓ apex ✓ www
    TLS ✓ issued, renews automatically
  4. 04 · Forward

    Visitors land where they meant to.

    One redirect straight to your destination, with the path and query string carried over, or sent somewhere specific with a path rule.One redirect, with the path and query string carried over.

    GET oldproduct.com/pricing?ref=x
    301 newproduct.dev/pricing?ref=x

What you get

Everything registrar forwarding should have done.

HTTPS everywhere

A certificate for every domain.

Apex and www, issued on setup and renewed automatically.Apex and www, renewed automatically.

Every TLD

.dev, .app and .page included.

HTTPS end to end, so HSTS-only domains forward like any other.HTTPS end to end.

Paths and path rulesPath rules

Deep links still work.

/pricing?ref=x arrives intact, or send /blog/* somewhere of its own.Paths kept, or routed on their own.

301 · 302 · 307 · 308

Permanent by default.

Temporary for launches, method-preserving for old API hosts, 410 for retired names.Plus 410 for retired names.

Wildcards

*.example.com, handled.

Subdomains get their own certificates, and a wildcard counts as one domain.Counts as one domain.

Your registrar stays

No transfer, no nameservers.

Ownership proof and routing records change. Your email keeps working.Email keeps working.

Import from anywhereImport

Bring what you have.

Cloudflare bulk redirects, vercel.json, Netlify _redirects, redirect.pizza exports or a CSV.Cloudflare, Vercel, Netlify, redirect.pizza, CSV.

Status page

99.9% uptime target, in public.99.9% target, in public.

Checked every minute at status.forward.domains.status.forward.domains

Pages

Not every domain needs to go somewhere.

Park it, sell it, or lend it to a good cause. Every page links to the rest of what you own, your live projects and your names for sale, so no domain is a dead end. Served over HTTPS, with no ads and no tracking.Park it, sell it, or lend it to a good cause. Every page links to the rest of what you own, so no domain is a dead end.

quietidea.com

Parked

quietidea.com

Something is brewing.

More from this owner

Quickzones

For the Mac

Queuebert

Queue monitoring

greatname.dev

For sale

Parked

Park it.

The name, a line about what’s coming, and links to your live projects. Free on every plan.

greatname.dev

For sale

greatname.dev

$4,500

USD · offers considered

Send offer · View listing

For sale

Sell it.

An asking price or “make an offer”. Offers come straight to you without exposing your email, and Forward takes no commission. Or link to your marketplace listing.An asking price or “make an offer”. Offers come straight to you, with no commission. Or link to your marketplace listing.

sparename.org

sparename.org · Parked for a good cause.

Verified nonprofit

[CHARITY NAME]

Donate ↗

Supporting a cause

Lend it to a good cause.

Point visitors to a verified nonprofit’s own donation page. Forward never touches the money. Free on every plan.Point visitors to a verified nonprofit’s own donation page. Forward never touches the money.

For developers

Redirects as code.

Keep every redirect, path rule and page in a redirects.yaml next to your code. fwd sync shows the plan, then applies it, from your terminal, from CI or from your agent. On every plan, including free.Keep every redirect in a redirects.yaml next to your code. fwd sync shows the plan, then applies it. On every plan, including free.

From your terminal.

fwd add creates the redirect and prints the records to set at your registrar. fwd verify checks DNS, the certificate and the redirect in one pass.fwd add prints the records to set at your registrar. fwd verify checks DNS, the certificate and the redirect.

Terminal

zshScroll →

$ fwd add oldproduct.com --to https://newproduct.dev
✓ Rule created
  oldproduct.com, www.oldproduct.com
  → https://newproduct.dev  301 · keeps path

  Set these records at Hover:
  @     A       [EDGE IP]
  www   CNAME   edge.forward.domains.
  Remove: Hover forwarding on @ and *

$ fwd verify oldproduct.com
  DNS    ✓ apex  ✓ www
  TLS    ✓ certificate issued
  HTTPS  ✓ 301 → newproduct.dev/pricing?ref=x
$ fwd add oldproduct.com \
    --to https://newproduct.dev
✓ Rule created  301 · keeps path

  Set these records at Hover:
  @     A       [EDGE IP]
  www   CNAME   edge.forward.domains.

$ fwd verify oldproduct.com
  DNS    ✓ apex  ✓ www
  TLS    ✓ certificate issued
  HTTPS  ✓ 301 → newproduct.dev
  1. 01

    Install the CLI

    npm install -g @forward-domains/clinpm i -g @forward-domains/cli

  2. 02

    Describe your redirects

    One file lists every domain, where it goes and how. fwd pull writes it from an account; fwd import writes it from Cloudflare, Vercel, Netlify or redirect.pizza.One file for every domain, or fwd import from where they live now.

  3. 03

    Sync on merge

    The GitHub Action runs fwd sync, so redirect changes go through review like any other change.The GitHub Action runs fwd sync, so redirect changes go through review.

redirects.yaml

YAMLScroll →

version: 1
rules:
  - hosts: [oldproduct.com, oldproduct.net]
    to: https://newproduct.dev
    paths:
      - from: /blog/*
        to: https://newproduct.dev/journal/*

  - hosts: [spring-launch.com]
    to: https://newproduct.dev/launch
    status: 302

  - hosts: [greatname.dev]
    action: page
    page: { template: forSale, price: "4500", currency: USD }
version: 1
rules:
  - hosts: [oldproduct.com]
    to: https://newproduct.dev
  - hosts: [spring-launch.com]
    to: https://newproduct.dev/launch
    status: 302
  - hosts: [greatname.dev]
    action: page
    page: { template: forSale, price: "4500", currency: USD }

Plan

Scroll →

$ fwd sync --dry-run
  + spring-launch.com   → newproduct.dev/launch   302
  ~ greatname.dev       redirect → for-sale page
  1 to add, 1 to change, 0 to remove

@forward-domains/cli

Add, import, verify, test and sync redirects from your terminal. Every command speaks --json.Add, import, verify, test and sync from your terminal.

Read the guide →

redirects.yaml

Hosts, destinations, status codes, path rules and pages, in one reviewable file.Redirects, path rules and pages in one reviewable file.

Read the guide →

forward-domains/sync-action

A GitHub Action that runs fwd sync on merge, with the plan posted to the pull request.Runs fwd sync on merge, with the plan on the pull request.

Read the guide →

@forward-domains/mcp

Let your agent check, test and plan redirects. Read-only by default; changes go through a plan you approve.Let your agent check, test and plan redirects. Changes need your approval.

Read the guide →

Point it.
Forward it.

Forward is in early access. Bring one domain, or the whole drawer of them.

forward.domains

© 2026 Forward