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

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.

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 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 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.

​​ 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 Import and Export.
  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:

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 60 IN A ; cf_tags=awesome 60 IN A ; cf_tags=tag1,tag2:value2,tag3:"value,with,commas",tag4:"value with \"escaped\" quotation marks"
; Only a comment 60 IN A ; just a comment without tags 60 IN A ; this comment contains cf_tags= as text cf_tags=
; Comments and tags 60 IN A ; simple example cf_tags=important,ticket:RM-12308 60 IN A ; 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 60 IN A