Cloudflare Docs
DNS
Visit DNS on GitHub
Set theme to dark (⇧+D)

Import and export records

When you add a new domain to Cloudflare, Cloudflare automatically scans for common records and adds them to your account’s DNS > Records page.

This scan is not guaranteed to find all existing DNS records, so make sure that all DNS records are added in the Cloudflare DNS > Records page before changing your nameservers to Cloudflare nameservers.


If you want more control over which DNS records are imported and how, use the bulk import functionality.

​​ Import records

​​ Format your zone file

Create a BIND zone file for your domain. If you need help, use a third-party tool.

Make sure to remove all comments from your import file that start with a semicolon (;).

If you are using certain record types — for example, CNAME, DNAME, MX, NS, PTR, or SRV records — make sure that the content of those records contains fully qualified domain names (which end in a trailing period like example.com.). For more details, refer to RFC 1035 or this post on Stack Exchange.

​​ Import zone file to Cloudflare

​​ Using the dashboard

To import a zone file using the dashboard:

  1. Log in to the Cloudflare dashboard and select your account and domain.
  2. Go to DNS > Records.
  3. Click Advanced.
  4. For Import DNS records, select your formatted file.
  5. If you do not want applicable records proxied, unselect Proxy imported DNS records.

​​ Using the API

To import records using the API, send a POST request with a properly formatted file.


​​ Export records

You can also bulk export records from Cloudflare.

​​ Using the dashboard

To export records using the dashboard:

  1. Log in to the Cloudflare dashboard and select your account and domain.
  2. Go to DNS > Records.
  3. Click Advanced.
  4. Click Export.

​​ Using the API

To export records using the API, send a GET request.


​​ DNS record attributes

When exporting or importing a zone file, Cloudflare formats comments and tags using the following structure, appending the attributes as inline comment using the ; character after each record in accordance with RFC 1035 section 5:

CombinationDescription
Only tagsTag names contain a small set of characters.

Additionally, tag values must be contained by a double quote (") if they contain ", =, ,, or \. When enclosed within double quotes ("), tag values are represented as JSON strings, so other quotes within the value can be escaped as \".

A tag with an empty value can be represented either as my-tag-name:"", my-tag-name:, or my-tag-name.
Only a commentComments have fewer limitations on characters, meaning that the comment is included verbatim.

If the comment includes the string cf_tags=, you need to include an additional cf_tags= at the end of the line.
Comment and tagsThe zone file comment would be of the form ; <comment> cf_tags=<tags>, as described above. Note the added space character before cf_tags=.
Neither attributeThe comment in the zone file may be empty or omitted entirely. Comments in the zone file that do not immediately follow a record are also ignored.
Example zone file
; Only tags
a.example.com. 60 IN A 1.1.1.1 ; cf_tags=awesome
b.example.com. 60 IN A 1.1.1.1 ; cf_tags=tag1,tag2:value2,tag3:"value,with,commas",tag4:"value with \"escaped\" quotation marks"
; Only a comment
c.example.com. 60 IN A 1.1.1.1 ; just a comment without tags
d.example.com. 60 IN A 1.1.1.1 ; this comment contains cf_tags= as text cf_tags=
; Comments and tags
e.example.com. 60 IN A 1.1.1.1 ; simple example cf_tags=important,ticket:RM-12308
f.example.com. 60 IN A 1.1.1.1 ; this is the comment cf_tags=tag1:value1,tag2:value2,tag-without-value,another-tag-without-value,tag-with-quoted-value:"because of the comma, quotes are needed"
; Neither attribute
g.example.com. 60 IN A 1.1.1.1