Skip to content

Import and export records

Use import and export to have more control over your DNS records and make processes like migrating a domain or bulk editing record comments easier.

Import records

Format your zone file

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

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

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. Select Import and Export.
  4. For Import DNS records, select your formatted file.
  5. If you do not want applicable records proxied, unselect Proxy imported DNS records.

Export records

You can also bulk export records from Cloudflare.

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. Select Import and Export.
  4. Select Export.

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:THIS-12345
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

cf-flatten tag

If you are on a paid zone and want to use Per-record CNAME flattening, use the tag cf-flatten next to each flattened CNAME record in your zone file. On export, this tag is automatically added to reflect the record configuration that you have on your zone.

DNS zone file directives

A DNS zone file can be constructed using directives in addition to resource records (RRs). Directives start with $ and are standardized - $ORIGIN and $INCLUDE are defined in RFC 1035, and $TTL is defined in RFC 2308. Additionally, BIND provides the non-standard $GENERATE directive.

Cloudflare supports $ORIGIN, $TTL, and $GENERATE directives.

$INCLUDE is not supported. When a zone file contains a $INCLUDE directive, Cloudflare responds with a parsing error $INCLUDE directive not allowed.