vCard

MIME Types for vCard: text/vcard, text/x-vcard and When Each Applies

Quick Answer

Use text/vcard as the MIME type for all VCF files. This is the official IANA-registered media type defined in RFC 6350. The older text/x-vcard type was used before standardization and still appears in legacy systems, but text/vcard is the correct choice for web servers, email attachments, API responses and download headers in 2026. Always include charset=utf-8 for vCard 4.0 files.

Introduction

When a web server sends a VCF file to a browser, when an email client attaches a vCard to a message, or when an API returns contact data, the MIME type tells the receiving application what kind of file it is dealing with. The wrong MIME type causes browsers to display raw vCard text instead of triggering a contact import, email clients to show attachments as generic files instead of contact cards and mobile devices to fail when tapping a VCF download link.

Despite being a simple two-value choice (text/vcard or text/x-vcard), MIME type configuration for vCard files is one of the most commonly misconfigured aspects of contact file delivery. This guide explains both types, when each applies, how to configure them on every major web server and how to troubleshoot the problems caused by incorrect MIME types.

What MIME Types Are and Why They Matter for VCF Files

MIME (Multipurpose Internet Mail Extensions) types are standardized labels that identify file formats across the internet. Every file served over HTTP, attached to an email, or returned by an API includes a MIME type in its headers. The receiving application uses this label to decide how to handle the content: render it, download it or open it with a specific program.

For VCF files, the MIME type determines whether a browser opens the system’s contact import dialog or displays the raw file as text. When a user clicks a “Download vCard” link on a website, the browser checks the Content-Type header. If it sees text/vcard, it recognizes the file as a contact card and offers to add it to the device’s address book. If it sees text/plain or no recognizable type, it displays the raw BEGIN:VCARD text in the browser window.

The Two vCard MIME Types

text/vcard (Official Standard)

text/vcard is the official IANA-registered media type for vCard files. It was formally registered as part of RFC 6350 (vCard 4.0 specification, published in 2011) and applies retroactively to all vCard versions including 2.1 and 3.0. This is the type you should use in all new implementations.

The full Content-Type header for a vCard 4.0 file is: Content-Type: text/vcard; charset=utf-8. For vCard 3.0 files, the charset parameter is optional because UTF-8 is assumed but not required. For vCard 2.1 files, include the charset parameter only if the file uses a specific encoding other than the system default.

text/x-vcard (Legacy)

text/x-vcard is the older, unofficial MIME type that predates IANA registration. The “x-” prefix indicates an experimental or vendor-specific type that was never formally standardized. It was widely used in the early 2000s before RFC 6350 established the official type. Many older systems, email clients, and web servers still use text/x-vcard by default.

While most modern applications accept both types, some platforms behave differently depending on which one they receive. Using text/x-vcard in new implementations is technically incorrect and may cause compatibility issues with strict parsers that only accept the registered type. If you encounter text/x-vcard in existing systems, updating to text/vcard is recommended but rarely urgent since both are widely recognized.

Which MIME Type to Use and When

Scenario Recommended MIME Type Notes
New web server configuration text/vcard Always use the standard type
Email attachment text/vcard Most email clients recognize both types
REST API response text/vcard Include charset=utf-8 for vCard 4.0
Download link on website text/vcard Add Content-Disposition: attachment
Legacy system integration text/x-vcard Only if the receiving system rejects text/vcard
CardDAV server text/vcard Required by CardDAV spec (RFC 6352)

MIME Types by vCard Version

All three vCard versions use the same MIME type text/vcard. The version is declared inside the file content (the VERSION property), not in the MIME type itself. There is no text/vcard3 or text/vcard4 variant. A common misconception is that vCard 2.1 requires text/x-vcard while newer versions use text/vcard. In reality, text/vcard applies to all versions.

The only difference across versions is the charset parameter. vCard 4.0 mandates UTF-8 exclusively, so charset=utf-8 should always be present. vCard 3.0 assumes UTF-8 by default. vCard 2.1 may use other encodings (Windows-1252, Shift-JIS), so the charset parameter is useful for declaring the actual encoding when it is not UTF-8. For details on encoding issues, see our VCF encoding error guide.

How to Configure Your Web Server

Apache

Add to your .htaccess file or Apache configuration:

AddType text/vcard .vcf .vcard

This maps both .vcf and .vcard file extensions to the correct MIME type. Apache serves these files with the text/vcard Content-Type header automatically. To force downloads instead of inline display, also add: <FilesMatch "\.(vcf|vcard)$"> Header set Content-Disposition attachment </FilesMatch>

Nginx

Nginx maps MIME types in its mime.types file. Check that the following line exists: text/vcard vcf vcard;. If the line is missing or uses text/x-vcard, update it to text/vcard and reload Nginx with nginx -s reload. To force downloads, add a Content-Disposition header in the location block for VCF files.

IIS

In IIS Manager, select the site, open MIME Types, and add a new entry: Extension .vcf, MIME type text/vcard. If an entry for .vcf already exists with text/x-vcard, edit it to text/vcard. Alternatively, add the mapping in web.config: <mimeMap fileExtension=".vcf" mimeType="text/vcard" />

CDN and Cloud Storage

Cloud storage services (AWS S3, Google Cloud Storage, Azure Blob) set MIME types based on file metadata rather than server configuration. When uploading VCF files, set the Content-Type metadata to text/vcard explicitly. AWS CLI example: aws s3 cp contact.vcf s3://bucket/ --content-type "text/vcard". Without explicit metadata, most cloud services default to application/octet-stream which prevents proper browser handling.

MIME Types in Email Attachments

When a VCF file is attached to an email, the MIME type appears in the attachment’s Content-Type header within the email’s MIME structure. Most email clients (Gmail, Outlook, Apple Mail, Thunderbird) recognize text/vcard attachments and display a “Add to Contacts” button or contact preview card. The typical MIME part looks like:

Content-Type: text/vcard; name="contact.vcf"
Content-Disposition: attachment; filename="contact.vcf"

If the email client sees text/plain or application/octet-stream instead, the VCF file appears as a generic attachment without the contact preview. The user can still open it manually, but the experience is degraded. Email libraries (like Python’s email.mime module) should use text/vcard when programmatically attaching VCF files.

MIME Types in APIs and Web Applications

REST APIs that return vCard data should set the Content-Type response header to text/vcard; charset=utf-8. APIs that accept vCard uploads should specify text/vcard in their Accept headers and documentation. CardDAV servers (used by iCloud, Google, Nextcloud for contact sync) use text/vcard exclusively as required by RFC 6352.

When generating VCF downloads in web applications, the response needs two headers: Content-Type: text/vcard tells the browser what the content is, and Content-Disposition: attachment; filename="contact.vcf" tells it to download rather than display inline. Without the Content-Disposition header, some browsers display the raw vCard text instead of triggering a download.

How Each Platform Interprets vCard MIME Types

Platform text/vcard text/x-vcard application/octet-stream
Chrome (desktop) Downloads, opens with system handler Same behavior Downloads as generic file
Safari (iOS) Opens contact import dialog Opens contact import dialog Downloads without preview
Android Chrome Opens Contacts app import Opens Contacts app import Downloads, may not auto-open
Gmail Shows contact card preview Shows contact card preview Generic attachment icon
Outlook Shows contact card preview Shows contact card preview Generic attachment
Apple Mail Shows contact card with add button Shows contact card with add button Generic attachment

Both text/vcard and text/x-vcard produce the same behavior on all major platforms. The practical difference only appears with strict parsers (like some CardDAV implementations) that reject text/x-vcard. However, application/octet-stream consistently degrades the user experience by preventing contact-specific handling.

Common MIME Type Problems

1

Browser displays raw vCard text instead of downloading. The server is sending the file with text/plain or no Content-Type header. Add the correct MIME type mapping for .vcf files and include a Content-Disposition: attachment header to force download.

2

VCF download works on desktop but not on mobile. Mobile browsers are stricter about MIME types. Verify the server sends text/vcard (not text/plain) by checking response headers in your browser’s developer tools. Also ensure the file extension is .vcf in the download filename.

3

Email attachment shows as generic file instead of contact card. The email was composed with the wrong Content-Type for the VCF attachment. If sending programmatically, set the attachment MIME type to text/vcard explicitly. If using a mail client, ensure the file has a .vcf extension so the client auto-detects the correct type.

Frequently Asked Questions

What is the correct MIME type for a .vcf file?

text/vcard is the correct and official MIME type for all VCF files regardless of vCard version (2.1, 3.0, or 4.0). This is registered with IANA as part of RFC 6350.

Is text/x-vcard still acceptable?

text/x-vcard still works on all major platforms and email clients. However, it is technically unofficial (the x- prefix means experimental) and should be replaced with text/vcard in any new or updated configuration. Strict CardDAV servers may reject it.

Should I include charset=utf-8 in the Content-Type?

Yes for vCard 4.0 files, which mandate UTF-8 encoding. For vCard 3.0, it is recommended but optional. For vCard 2.1, include it only if the file actually uses UTF-8 rather than a regional encoding. Including the charset parameter never causes problems and helps receiving applications decode the content correctly.

Why does my VCF download show as text in the browser?

Your web server is either sending text/plain as the Content-Type or missing the MIME type mapping for .vcf files entirely. Check your server configuration and add the text/vcard mapping. Also add a Content-Disposition: attachment header to ensure browsers download the file rather than trying to render it inline.

Does the MIME type affect whether contacts import correctly?

The MIME type affects how the file is handled by the browser or email client (download vs display, contact preview vs generic attachment), but it does not affect the actual import process. Once the file is saved locally and imported into a contacts application, the MIME type is no longer relevant. Import errors are caused by file content issues (encoding, structure, version) rather than MIME type configuration.

Conclusion

Last verified: February 2026. MIME type behavior tested on Chrome 131, Safari 18, Firefox 134, and Edge 131. Email behavior tested on Gmail, Outlook 365, Apple Mail 16, and Thunderbird 128. Server configuration tested on Apache 2.4, Nginx 1.26, and IIS 10.

The correct MIME type for vCard files is text/vcard. Use it everywhere: web server configuration, email attachments, API responses, CDN metadata, and download headers. The legacy text/x-vcard type still works on all major platforms but should be replaced in any configuration you control. Always pair text/vcard with a Content-Disposition: attachment header for download links and include charset=utf-8 for vCard 4.0 files.

Three rules: always use text/vcard (not text/x-vcard, not text/plain, not application/octet-stream), add Content-Disposition: attachment for download links to prevent browsers from displaying raw text, and include charset=utf-8 for vCard 4.0 files to ensure correct character decoding.

About the Author

This guide is written and maintained by the Univik team, developers of file conversion and digital forensics tools since 2013. We configure MIME types for VCF file delivery across our own web properties and tools daily, and the server configurations in this guide are taken from our production setups. Have a MIME type configuration question? Reach out to our team.