DQUOTE = %x22
; Quotation Mark
HTAB = %x09
; Horizontal Tabulation
SP = %x20
; space
VCHAR = %x21-7E
; Visible (printing) characters
WSP = SP / HTAB
; White Space
;*******************************************
; Basic vCard Definition
;*******************************************
vcard_entity = 1*(vcard)
vcard = [group "."] "BEGIN" ":" "VCARD" 1*CRLF
1*(contentline)
;A vCard object MUST include the VERSION, FN and N types.
[group "."] "END" ":" "VCARD" 1*CRLF
contentline = [group "."] name *(";" param ) ":" value CRLF
; When parsing a content line, folded lines must first
; be unfolded according to the unfolding procedure
; described above. When generating a content line, lines
; longer than 75 characters SHOULD be folded according to
; the folding procedure described in [MIME DIR].
group = 1*(ALPHA / DIGIT / "-")
name = iana-token / x-name
; Parsing of the param and value is
; based on the "name" or type identifier
; as defined in ABNF sections below
iana-token = 1*(ALPHA / DIGIT / "-")
; vCard type or parameter identifier registered with IANA
x-name = "X-" 1*(ALPHA / DIGIT / "-")
; Reserved for non-standard use
param = param-name "=" param-value *("," param-value)
param-name = iana-token / x-name
param-value = ptext / quoted-string
ptext = *SAFE-CHAR
value = *VALUE-CHAR
quoted-string = DQUOTE QSAFE-CHAR DQUOTE
NON-ASCII = %x80-FF
; Use is restricted by CHARSET parameter
; on outer MIME object (UTF-8 preferred)
QSAFE-CHAR = WSP / %x21 / %x23-7E / NON-ASCII
; Any character except CTLs, DQUOTE
SAFE-CHAR = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E / NON-ASCII
; Any character except CTLs, DQUOTE, ";", ":", ","
VALUE-CHAR = WSP / VCHAR / NON-ASCII
; Any textual character
;*******************************************
; vCard Type Definition
;
; Provides type-specific definitions for how the
; "value" and "param" are defined.
;*******************************************
;For name="NAME"
param = ""
; No parameters allowed
value = text-value
;For name="PROFILE"
param = ""
; No parameters allowed
value = text-value
; Value MUST be the case insensitive value "VCARD
;For name="SOURCE"
param = source-param
; No parameters allowed
value = uri
source-param = ("VALUE" "=" "uri")
/ ("CONTEXT" "=" "word")
; Parameter value specifies the protocol context
; for the uri value.
/ (x-name "=" *SAFE-CHAR)
;For name="FN"
;This type MUST be included in a vCard object.
param = text-param
; Text parameters allowed
value = text-value
;For name="N"
;This type MUST be included in a vCard object.
param = text-param
; Text parameters allowed
value = n-value
n-value = 0*4(text-value *("," text-value) ";")
text-value *("," text-value)
; Family; Given; Middle; Prefix; Suffix.
; Example: Public;John;Quincy,Adams;Reverend Dr. III
;For name="NICKNAME"
param = text-param
; Text parameters allowed
value = text-list
;For name="PHOTO"
param = img-inline-param
; Only image parameters allowed
param =/ img-refer-param
; Only image parameters allowed
value = img-inline-value
; Value and parameter MUST match
value =/ img-refer-value
; Value and parameter MUST match
;For name="BDAY"
param = ("VALUE" "=" "date")
; Only value parameter allowed
param =/ ("VALUE" "=" "date-time")
; Only value parameter allowed
value = date-value
; Value MUST match value type
value =/ date-time-value
; Value MUST match value type
;For name="ADR"
param = adr-param / text-param
; Only adr and text parameters allowed
value = adr-value
;For name="LABEL"
param = adr-param / text-param
; Only adr and text parameters allowed
value = text-value
;For name="TEL"
param = tel-param
; Only tel parameters allowed
value = phone-number-value
tel-param = "TYPE" "=" tel-type *("," tel-type)
tel-type = "HOME" / "WORK" / "PREF" / "VOICE" / "FAX" / "MSG"
/ "CELL" / "PAGER" / "BBS" / "MODEM" / "CAR" / "ISDN"
/ "VIDEO" / "PCS" / iana-token / x-name
; Values are case insensitive
;For name="EMAIL"
param = email-param
; Only email parameters allowed
value = text-value
email-param = "TYPE" "=" email-type ["," "PREF"]
; Value is case insensitive
email-type = "INTERNET" / "X400" / iana-token / "X-" word
; Values are case insensitive
;For name="MAILER"
param = text-param
; Only text parameters allowed
value = text-value
;For name="TZ"
param = ""
; No parameters allowed
value = utc-offset-value
;For name="GEO"
param = ""
; No parameters allowed
value = float-value ";" float-value
;For name="TITLE"
param = text-param
; Only text parameters allowed
value = text-value
;For name="ROLE"
param = text-param
; Only text parameters allowed
value = text-value
;For name="LOGO"
param = img-inline-param / img-refer-param
; Only image parameters allowed
value = img-inline-value / img-refer-value
; Value and parameter MUST match
;For name="AGENT"
param = agent-inline-param
param =/ agent-refer-param
value = agent-inline-value
; Value and parameter MUST match
value =/ agent-refer-value
; Value and parameter MUST match
agent-inline-param = ""
; No parameters allowed
agent-refer-param = "VALUE" "=" "uri"
; Only value parameter allowed
agent-inline-value = text-value
; Value MUST be a valid vCard object
agent-refer-value = uri
; URI MUST refer to image content of given type
;For name="ORG"
param = text-param
; Only text parameters allowed
value = org-value
org-value = *(text-value ";") text-value
; First is Organization Name, remainder are Organization Units.
;For name="CATEGORIES"
param = text-param
; Only text parameters allowed
value = text-list
;For name="NOTE"
param = text-param
; Only text parameters allowed
value = text-value
;For name="PRODID"
param = ""
; No parameters allowed
value = text-value
;For name="REV"
param = ["VALUE" =" "date-time"]
; Only value parameters allowed. Values are case insensitive.
param =/ "VALUE" =" "date"
; Only value parameters allowed. Values are case insensitive.
value = date-time-value
value =/ date-value
;For name="SORT-STRING"
param = text-param
; Only text parameters allowed
value = text-value
;For name="SOUND"
param = snd-inline-param
; Only sound parameters allowed
param =/ snd-refer-param
; Only sound parameters allowed
value = snd-line-value
; Value MUST match value type
value =/ snd-refer-value
; Value MUST match value type
snd-inline-value = binary-value CRLF
; Value MUST be "b" encoded audio content
snd-inline-param = ("VALUE" "=" "binary"])
/ ("ENCODING" "=" "b")
/ ("TYPE" "=" *SAFE-CHAR)
; Value MUST be an IANA registered audio type
snd-refer-value = uri
; URI MUST refer to audio content of given type
snd-refer-param = ("VALUE" "=" "uri")
/ ("TYPE" "=" word)
; Value MUST be an IANA registered audio type
;For name="UID"
param = ""
; No parameters allowed
value = text-value
;For name="URL"
param = ""
; No parameters allowed
value = uri
;For name="VERSION"
;This type MUST be included in a vCard object.
param = ""
; No parameters allowed
value = text-value
; Value MUST be "3.0"
;For name="CLASS"
param = ""
; No parameters allowed
value = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL"
/ iana-token / x-name
; Value are case insensitive
;For name="KEY"
param = key-txt-param
; Only value and type parameters allowed
param =/ key-bin-param
; Only value and type parameters allowed
value = text-value
value =/ binary-value
key-txt-param = "TYPE" "=" keytype
key-bin-param = ("TYPE" "=" keytype)
/ ("ENCODING" "=" "b")
; Value MUST be a "b" encoded key or certificate
keytype = "X509" / "PGP" / iana-token / x-name
; Values are case insensitive
;For name="X-" non-standard type
param = text-param / (x-name "=" param-value)
; Only text or non-standard parameters allowed
value = text-value
;*******************************************
; vCard Commonly Used Parameter Definition
;*******************************************
text-param = ("VALUE" "=" "ptext")
/ ("LANGUAGE" "=" langval)
/ (x-name "=" param-value)
langval = <a language string as defined in RFC1766>
img-inline-value = binary-value
;Value MUST be "b" encoded image content
img-inline-param
img-inline-param = ("VALUE" "=" "binary")
/ ("ENCODING" "=" "b")
/ ("TYPE" "=" param-value
;TYPE value MUST be an IANA registered image type
img-refer-value = uri
;URI MUST refer to image content of given type
img-refer-param = ("VALUE" "=" "uri")
/ ("TYPE" "=" param-value)
;TYPE value MUST be an IANA registered image type
adr-param = ("TYPE" "=" adr-type *("," adr-type))
/ (text-param)
adr-type = "dom" / "intl" / "postal" / "parcel" / "home"
/ "work" / "pref" / iana-type / x-name
adr-value = 0*6(text-value ";") text-value
; PO Box, Extended Address, Street, Locality, Region, Postal
; Code, Country Name
;*******************************************
; vCard Type Value Definition
;*******************************************
text-value-list = 1*text-value *("," 1*text-value)
text-value = *(SAFE-CHAR / ":" / DQUOTE / ESCAPED-CHAR)
ESCAPED-CHAR = "\\" / "\;" / "\," / "\n" / "\N")
; \\ encodes \, \n or \N encodes newline
; \; encodes ;, \, encodes ,
binary-value = <A "b" encoded text value as defined in [RFC2047]>
date-value = <A single date value as defined in [MIME-DIR]>
time-value = <A single time value as defined in [MIME-DIR]>
date-time-value = <A single date-time value as defined in [MIME-DIR]
float-value = <A single float value as defined in [MIME-DIR]>
phone-number-value = <A single text value as defined in [CCITT
E.163] and [CCITT X.121]>
uri-value = <A uri value as defined in [MIME-DIR]>
utc-offset-value = ("+" / "-") time-hour ":" time-minute
time-hour = 2DIGIT ;00-23
time-minute = 2DIGIT ;00-59
5. Differences From vCard v2.1
This specification has been reviewed by the IETF community. The
review process introduced a number of differences from the [VCARD]
version 2.1. These differences require that vCard objects conforming
to this specification have a different version number than a vCard
conforming to [VCARD]. The differences include the following:
. The QUOTED-PRINTABLE inline encoding has been eliminated.
Only the "B" encoding of [RFC2047] is an allowed value for
the ENCODING parameter.
. The method for specifying CRLF character sequences in text
type values has been changed. The CRLF character sequence in
a text type value is specified with the backslash character
sequence "\n" or "\N".
. Any COMMA or SEMICOLON in a text type value must be backslash
escaped.
. VERSION value corresponding to this specification MUST be
"3.0".
. The [MIME-DIR] predefined types of SOURCE, NAME and PROFILE
are allowed.
. The [MIME-DIR] VALUE type parameter for value data typing is
allowed. In addition, there are extensions made to these type
values for additional value types used in this specification.
. The [VCARD] CHARSET type parameter has been eliminated.
Character set can only be specified on the CHARSET parameter
on the Content-Type MIME header field.
. The [VCARD] support for non-significant WSP character has
been eliminated.
. The "TYPE=" prefix to parameter values is required. In
[VCARD] this was optional.
. LOGO, PHOTO and SOUND multimedia formats MUST be either IANA
registered types or non-standard types.
. Inline binary content must be "B" encoded and folded. A blank
line after the encoded binary content is no longer required.
. TEL values can be identified as personal communication
services telephone numbers with the PCS type parameter value.
. The CATEGORIES, CLASS, NICKNAME, PRODID and SORT-STRING types
have been added.
. The VERSION, N and FN types MUST be specified in a vCard.
This identifies the version of the specification that the
object was formatted to. It also assures that every vCard
will include both a structured and formatted name that can be
used to identify the object.
6. Acknowledgements
The many valuable comments contributed by members of the IETF ASID
working group are gratefully acknowledged, as are the contributions
by Roland Alden, Stephen Bartlett, Alec Dun, Patrik Faltstrom, Daniel
Gurney, Bruce Johnston, Daniel Klaussen, Pete Miller, Keith Moore,
Vinod Seraphin, Michelle Watkins. Chris Newman was especially helpful
in navigating the intricacies of ABNF lore.
7. Authors' Addresses
BEGIN:vCard
VERSION:3.0
FN:Frank Dawson
ORG:Lotus Development Corporation
ADR;TYPE=WORK,POSTAL,PARCEL:;;6544 Battleford Drive
;Raleigh;NC;27613-3502;U.S.A.
TEL;TYPE=VOICE,MSG,WORK:+1-919-676-9515
TEL;TYPE=FAX,WORK:+1-919-676-9564
EMAIL;TYPE=INTERNET,PREF:Frank_Dawson@Lotus.com
EMAIL;TYPE=INTERNET:fdawson@earthlink.net
URL:http://home.earthlink.net/~fdawson
END:vCard
BEGIN:vCard
VERSION:3.0
FN:Tim Howes
ORG:Netscape Communications Corp.
ADR;TYPE=WORK:;;501 E. Middlefield Rd.;Mountain View;
CA; 94043;U.S.A.
TEL;TYPE=VOICE,MSG,WORK:+1-415-937-3419
TEL;TYPE=FAX,WORK:+1-415-528-4164
EMAIL;TYPE=INTERNET:howes@netscape.com
END:vCard
8. Security Considerations
vCards can carry cryptographic keys or certificates, as described in
Section 3.7.2.
Section 3.7.1 specifies a desired security classification policy for
a particular vCard. That policy is not enforced in any way.
The vCard objects have no inherent authentication or privacy, but can
easily be carried by any security mechanism that transfers MIME
objects with authentication or privacy. In cases where threats of
"spoofed" vCard information is a concern, the vCard SHOULD BE
transported using one of these secure mechanisms.
The information in a vCard may become out of date. In cases where the
vitality of data is important to an originator of a vCard, the "URL"
type described in section 3.6.8 SHOULD BE specified. In addition, the
"REV" type described in section 3.6.4 can be specified to indicate
the last time that the vCard data was updated.
9. References
[ISO 8601] ISO 8601:1988 - Data elements and interchange formats -
Information interchange - Representation of dates and
times - The International Organization for
Standardization, June, 1988.
[ISO 8601 TC] ISO 8601, Technical Corrigendum 1 - Data elements and
interchange formats - Information interchange -
Representation of dates and times - The International
Organization for Standardization, May, 1991.
[ISO 9070] ISO 9070, Information Processing - SGML support
facilities - Registration Procedures for Public Text
Owner Identifiers, April, 1991.
[CCITT E.163] Recommendation E.163 - Numbering Plan for The
International Telephone Service, CCITT Blue Book,
Fascicle II.2, pp. 128-134, November, 1988.
[CCITT X.121] Recommendation X.121 - International Numbering Plan for
Public Data Networks, CCITT Blue Book, Fascicle VIII.3,
pp. 317-332, November, 1988.
[CCITT X.520] Recommendation X.520 - The Directory - Selected
Attribute Types, November 1988.
[CCITT X.521] Recommendation X.521 - The Directory - Selected Object
Classes, November 1988.
[MIME-DIR] Howes, T., Smith, M., and F. Dawson, "A MIME Content-
Type for Directory Information", RFC2425, September
1998.
[RFC1738] Berners-Lee, T., Masinter, L., and M. McCahill,
"Uniform Resource Locators (URL)", RFC1738, December
1994.
[RFC1766] Alvestrand, H., "Tags for the Identification of
Languages", RFC1766, March 1995.
[RFC1872] Levinson, E., "The MIME Multipart/Related Content-
type", RFC1872, December 1995.
[RFC2045] Freed, N., and N. Borenstein, "Multipurpose Internet
Mail Extensions (MIME) - Part One: Format of Internet
Message Bodies", RFC2045, November 1996.
[RFC2046] Freed, N., and N. Borenstein, "Multipurpose Internet
Mail Extensions (MIME) - Part Two: Media Types", RFC
2046, November 1996.
[RFC2047] Moore, K., "Multipurpose Internet Mail Extensions
(MIME) - Part Three: Message Header Extensions for
Non-ASCII Text", RFC2047, November 1996.
[RFC2048] Freed, N., Klensin, J., and J. Postel, "Multipurpose
Internet Mail Extensions (MIME) - Part Four:
Registration Procedures", RFC2048, January 1997.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC2119, March 1997.
[RFC2234] Crocker, D., and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC2234, November 1997.
[UNICODE] "The Unicode Standard - Version 2.0", The Unicode
Consortium, July 1996.
[VCARD] Internet Mail Consortium, "vCard - The Electronic
Business Card Version 2.1",
http://www.imc.org/pdi/vcard-21.txt, September 18,
1996.
10. Full Copyright Statement
Copyright (C) The Internet Society (1998). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.