Help
RSS
API
Feed
Maltego
Contact
Domain > csv-spec.org
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2019-11-28
104.28.29.27
(
ClassC
)
2025-10-06
104.21.2.218
(
ClassC
)
Port 443
HTTP/1.1 200 OKDate: Mon, 06 Oct 2025 01:41:50 GMTContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveServer: cloudflarelast-modified: Sun, 08 Oct 2017 15:27:38 GMTaccess-control-allow-origin: *expires: Mon, 06 Oct 2025 01:51:50 GMTCache-Control: max-age600Report-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?svYjt52Mhu4wbxt6E8YUrtFGIoA0j5V06mBXCRatBFigAnNXBzlA3lZOlABpIFw6bg16uZrQEh45%2B6qbcfE3YJIs4AXB4A3pzVIg%3D}}x-proxy-cache: MISSx-github-request-id: 883A:190020:2D90A3:2E2990:68E31E5CNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Age: 0via: 1.1 varnishx-served-by: cache-pdx12320-PDXx-cache: MISSx-cache-hits: 0x-timer: S1759714911.770839,VS0,VE89vary: Accept-Encodingx-fastly-request-id: 6e2cc8cbc968593539dbd2f6f26864b03280097dcf-cache-status: DYNAMICCF-RAY: 98a1756ffbe6efc2-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html> head> meta charsetutf-8> meta http-equivX-UA-Compatible contentIEedge> meta nameviewport contentwidthdevice-width, initial-scale1> link hrefhttps://fonts.googleapis.com/css?familyOpen+Sans+Condensed:700,300|Open+Sans:400italic,700italic,400,700 relstylesheet typetext/css> link relstylesheet hrefhttps://unpkg.com/purecss@1.0.0/build/pure-min.css integritysha384-nn4HPE8lTHyVtfCBi5yW9d20FjT8BJwUXyWZT9InLYax14RDjBj46LmSztkmNP9w crossoriginanonymous> link relstylesheet hrefhttps:////maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css> link typetext/css relstylesheet href/assets/main-5df19fc13b2a391dcab974f0584820f95eecdd416e60b99950f2058c61a2e99f.css> !-- Begin Jekyll SEO tag v2.2.3 --> title>CSV Spec 0.9.0-draft.2 | CSV Spec/title> meta propertyog:title contentCSV Spec 0.9.0-draft.2 /> meta nameauthor contentJim Myhrberg /> meta propertyog:locale contenten_US /> meta namedescription contentAn attempt to describe CSV-like formats in a obvious and easy to understand way, complete with code examples aimed at developers. /> meta propertyog:description contentAn attempt to describe CSV-like formats in a obvious and easy to understand way, complete with code examples aimed at developers. /> link relcanonical hrefhttps://csv-spec.org/ /> meta propertyog:url contenthttps://csv-spec.org/ /> meta propertyog:site_name contentCSV Spec /> script typeapplication/ld+json> {@context:http://schema.org,@type:WebSite,name:CSV Spec,headline:CSV Spec 0.9.0-draft.2,author:{@type:Person,name:Jim Myhrberg},description:An attempt to describe CSV-like formats in a obvious and easy to understand way, complete with code examples aimed at developers.,url:https://csv-spec.org/} /script> !-- End Jekyll SEO tag --> /head> body> div idlayout> a href#menu idmenuLink classmenu-link> span>/span> /a> div idmenu> div classpure-menu> ul classpure-menu-list> li classpure-menu-item> div classpure-menu-label>Versions:/div> /li> li classpure-menu-item version-0.9.0-draft.2 pure-menu-selected> a href/spec/0.9.0-draft.2.html classpure-menu-link>0.9.0-draft.2/a> /li> li classpure-menu-item version-0.9.0-draft.1> a href/spec/0.9.0-draft.1.html classpure-menu-link>0.9.0-draft.1/a> /li> /ul> /div> div classlinks> a hrefhttps://github.com/parsecsv/csv-spec> i classfa fa-github aria-hiddentrue>/i> /a> /div> /div> div idmain> div classcontent> h1 idcsv-spec-090-draft2>CSV Spec 0.9.0-draft.2/h1> h2 idsummary>Summary/h2> p>CSV is not a file format, it is a loose set of guidelines of how to structure tabular data into a plain text string. As such there’s an endless amount of code classhighlighter-rouge>*.csv/code> files floating around which are highly incompatible with each other. The closest thing there is to a specification is a hrefhttp://tools.ietf.org/html/rfc4180>RFC 4180/a>./p> h2 idgoals>Goals/h2> p>This project is an attempt to summarize RFC 4180 and the information in the a hrefhttps://en.wikipedia.org/wiki/Comma-separated_values>Comma-separated values (CSV)/a> Wikipedia article into a easy to understand format. The spec will also take into account that the comma (code classhighlighter-rouge>,/code>) character is not the only character used as a field delimiter. Semi-colons (code classhighlighter-rouge>;/code>), tabs (code classhighlighter-rouge>\t/code>), and more are popular field delimiter characters. As such the specification will more accurately be describing a CSV-like structured data format./p> p>We will also provide input/output test files that CSV parser/writer software libraries can use to validate if they properly adhere to the rules laid out in this specification. And if possible we will even try to provide code snippets in various languages that attempts to automatically determine the delimiter character used in any given input CSV-like formatted file/data./p> h2 idroadmap>Roadmap/h2> ol> li>Write up core specification rules. em>in-progress/em>/li> li>~Create website for a hrefhttps://csv-spec.org/>csv-spec.org/a>.~ em>strong>done/strong>/em>/li> li>Create input/output test files covering all rules in the specification./li> li>Create linting tool as a NPM module, allowing easy validation of CSV data both client-side in a web browser, and server side via a command line tool./li> li>Create automatic delimiter character detection code snippets in various programming languages which CSV parser developers can freely use to enhance their libraries./li> /ol> h2 idterminology>Terminology/h2> ul> li>strong>Field/strong> — A singular String value within a record./li> li>strong>Record/strong> (or strong>Row/strong>) — A collection of fields. This is often referred to as a “line”, but a single record can span multiple text lines if a field within it contains one or more line breaks./li> li>strong>Delimiter/strong> — The character used to separate fields withing a row. Commonly this will be a comma (code classhighlighter-rouge>,/code>), but semi-colons (code classhighlighter-rouge>;/code>) or tabs (code classhighlighter-rouge>\t/code>) are two other popular delimiter characters./li> li>strong>Header/strong> — The first row is often used to contain the column names for all remaining rows. Header names would be used as key names when CSV data is converted to JSON for example./li> li>strong>Line Break/strong> — Line breaks in CSV files can be CRLF (code classhighlighter-rouge>\r\n/code>), LF (code classhighlighter-rouge>\n/code>), and even in rare cases CR (code classhighlighter-rouge>\r/code>)./li> li>strong>LF, CR, and CRLF/strong> — Different types of line breaks, typically determined by the OS. Linux, macOS, and other *NIX operating systems generally use a line feed (LF or code classhighlighter-rouge>\n/code>) character. Windows uses a carriage return (CR or code classhighlighter-rouge>\r/code>) and a line feed character, effectively “CRLF” (code classhighlighter-rouge>\r\n/code>)./li> /ul> h2 idcsv-format-specification>CSV Format Specification/h2> p>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in a hrefhttps://tools.ietf.org/html/rfc2119>RFC 2119/a>./p> p>These rules are mostly based on the corresponding section from a hrefhttp://tools.ietf.org/html/rfc4180#section-2>RFC 4180/a>, with minor changes, clarifications and improved examples./p> ol> li> p>Each record starts at the beginning of its own line, and ends with a line break (shown as code classhighlighter-rouge>¬/code>)./p> p>CSV:/p> pre>code classlanguage-csv>aaa,bbb,ccc¬xxx,yyy,zzz¬/code>/pre> p>JSON:/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classs2>bbb/span>span classp>,/span>span classw> /span>span classs2>ccc/span>span classp>,/span>span classw> /span>span classp>/span>span classs2>xxx/span>span classp>,/span>span classw> /span>span classs2>yyy/span>span classp>,/span>span classw> /span>span classs2>zzz/span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> /li> li> p>Though it is RECOMMENDED, the last record in a file is not required to have a ending line break./p> p>CSV:/p> pre>code classlanguage-csv>aaa,bbb,ccc¬xxx,yyy,zzz/code>/pre> p>JSON:/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classs2>bbb/span>span classp>,/span>span classw> /span>span classs2>ccc/span>span classp>,/span>span classw> /span>span classp>/span>span classs2>xxx/span>span classp>,/span>span classw> /span>span classs2>yyy/span>span classp>,/span>span classw> /span>span classs2>zzz/span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> /li> li> p>There may be an OPTIONAL header line appearing as the first line of the file with the same format as normal records. This header will contain names corresponding to the fields in the file, and MUST contain the same number of fields as the records in the rest of the file./p> p>CSV:/p> pre>code classlanguage-csv>field_1,field_2,field_3¬aaa,bbb,ccc¬xxx,yyy,zzz¬/code>/pre> p>JSON (ignoring headers):/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classs2>field_1/span>span classp>,/span>span classw> /span>span classs2>field_2/span>span classp>,/span>span classw> /span>span classs2>field_3/span>span classp>,/span>span classw> /span>span classp>/span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classs2>bbb/span>span classp>,/span>span classw> /span>span classs2>ccc/span>span classp>,/span>span classw> /span>span classp>/span>span classs2>xxx/span>span classp>,/span>span classw> /span>span classs2>yyy/span>span classp>,/span>span classw> /span>span classs2>zzz/span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> p>JSON (using headers):/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>{/span>span classnt>field_1/span>span classp>:/span>span classw> /span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classnt>field_2/span>span classp>:/span>span classw> /span>span classs2>bbb/span>span classp>,/span>span classw> /span>span classnt>field_3/span>span classp>:/span>span classw> /span>span classs2>ccc/span>span classp>},/span>span classw> /span>span classp>{/span>span classnt>field_1/span>span classp>:/span>span classw> /span>span classs2>xxx/span>span classp>,/span>span classw> /span>span classnt>field_2/span>span classp>:/span>span classw> /span>span classs2>yyy/span>span classp>,/span>span classw> /span>span classnt>field_3/span>span classp>:/span>span classw> /span>span classs2>zzz/span>span classp>}/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> /li> li> p>Within each record and the OPTIONAL header, there may be one or more fields, separated by a delimiter (normally a comma). Each record MUST contain the same number of fields throughout the file./p> p>CSV (invalid):/p> pre>code classlanguage-csv>aaa,bbb,ccc¬111,222,333,444¬xxx,yyy,zzz¬/code>/pre> /li> li> p>The last field in a record MUST NOT be followed by a comma. This results in a additional field with nothing in it./p> p>CSV:/p> pre>code classlanguage-csv>aaa,bbb,ccc,¬xxx,yyy,zzz,¬/code>/pre> p>JSON:/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classs2>bbb/span>span classp>,/span>span classw> /span>span classs2>ccc/span>span classp>,/span>span classw> /span>span classs2>/span>span classp>,/span>span classw> /span>span classp>/span>span classs2>xxx/span>span classp>,/span>span classw> /span>span classs2>yyy/span>span classp>,/span>span classw> /span>span classs2>zzz/span>span classp>,/span>span classw> /span>span classs2>/span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> /li> li> p>Spaces are considered part of a field and MUST NOT be ignored./p> p>CSV:/p> pre>code classlanguage-csv>aaa , bbb , ccc¬ xxx, yyy ,zzz ¬/code>/pre> p>JSON:/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classs2>aaa /span>span classp>,/span>span classw> /span>span classs2> bbb /span>span classp>,/span>span classw> /span>span classs2> ccc/span>span classp>,/span>span classw> /span>span classp>/span>span classs2> xxx/span>span classp>,/span>span classw> /span>span classs2> yyy /span>span classp>,/span>span classw> /span>span classs2>zzz /span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> /li> li> p>Fields containing line breaks (CRLF, LF, or CR), double quotes, or the delimiter character (normally a comma) MUST be enclosed in double-quotes./p> p>CSV:/p> pre>code classlanguage-csv>aaa,b¬bb,ccc¬xxx,y, yy,zzz¬/code>/pre> p>JSON:/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classs2>b\r\nbb/span>span classp>,/span>span classw> /span>span classs2>ccc/span>span classp>,/span>span classw> /span>span classp>/span>span classs2>xxx/span>span classp>,/span>span classw> /span>span classs2>y, yy/span>span classp>,/span>span classw> /span>span classs2>zzz/span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> /li> li> p>A double-quote appearing inside a field MUST be escaped by preceding it with another double quote, and the field itself MUST be enclosed in double quotes./p> p>CSV:/p> pre>code classlanguage-csv>aaa,bbb,ccc¬/code>/pre> p>JSON:/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classs2>b\bb/span>span classp>,/span>span classw> /span>span classs2>ccc/span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> /li> li> p>When a field enclosed in double quotes has spaces before and/or after the double quotes, the spaces MUST be ignored, as the field starts and ends with the double quotes. However this is considered invalid formatting and the CSV parser SHOULD report some form of warning message./p> p>CSV:/p> pre>code classlanguage-csv>aaa,bbb,ccc¬xxx, y, yy ,zzz¬/code>/pre> p>JSON:/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classs2>bbb/span>span classp>,/span>span classw> /span>span classs2>ccc/span>span classp>,/span>span classw> /span>span classp>/span>span classs2>xxx/span>span classp>,/span>span classw> /span>span classs2>y, yy/span>span classp>,/span>span classw> /span>span classs2>zzz/span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> /li> li> p>It is possible to enclose every field in double quotes even if they don’t need to be enclosed. However it is RECOMMENDED to only enclose fields in double quotes that requires it./p> p>CSV:/p> pre>code classlanguage-csv>aaa,bbb,ccc¬xxx,yyy,zzz¬/code>/pre> p>JSON:/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classs2>bbb/span>span classp>,/span>span classw> /span>span classs2>ccc/span>span classp>,/span>span classw> /span>span classp>/span>span classs2>xxx/span>span classp>,/span>span classw> /span>span classs2>yyy/span>span classp>,/span>span classw> /span>span classs2>zzz/span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> /li> li> p>All fields are always strings. CSV itself does not support type casting to integers, floats, booleans, or anything else. It is not a CSV library’s responsibility to type cast input CSV data./p> p>If type casting is required, it is up to the developer using a specific CSV library to ensure types are correctly dealt with./p> p>Input JSON:/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classmi>10/span>span classp>,/span>span classw> /span>span classkc>true/span>span classp>,/span>span classw> /span>span classmf>0.3/span>span classp>,/span>span classw> /span>span classkc>null/span>span classp>,/span>span classw> /span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classp>/span>span classmi>11/span>span classp>,/span>span classw> /span>span classkc>false/span>span classp>,/span>span classw> /span>span classmf>2.13/span>span classp>,/span>span classw> /span>span classs2>/span>span classp>,/span>span classw> /span>span classs2>bbb/span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> p>Output CSV:/p> pre>code classlanguage-csv>10,true,0.3,,aaa¬11,false,2.13,,bbb¬/code>/pre> p>Output CSV parsed back to JSON:/p> div classlanguage-json highlighter-rouge> pre classhighlight>code>span classp>/span>span classw> /span>span classp>/span>span classs2>10/span>span classp>,/span>span classw> /span>span classs2>true/span>span classp>,/span>span classw> /span>span classs2>0.3/span>span classp>,/span>span classw> /span>span classs2>/span>span classp>,/span>span classw> /span>span classs2>aaa/span>span classp>,/span>span classw> /span>span classp>/span>span classs2>11/span>span classp>,/span>span classw> /span>span classs2>false/span>span classp>,/span>span classw> /span>span classs2>2.13/span>span classp>,/span>span classw> /span>span classs2>/span>span classp>,/span>span classw> /span>span classs2>bbb/span>span classp>/span>span classw> /span>span classp>/span>span classw>/span>/code>/pre> /div> p>At this point it is up to the developer themselves to type cast the above output data from the CSV parser./p> /li> li>However, when rendering type cast input data to CSV text, non-string types MUST be converted to a string in such a way that minimal information is lost. ul> li>Integers and floats MUST be rendered as a string version of themselves./li> li>Booleans code classhighlighter-rouge>true/code> and code classhighlighter-rouge>false/code> MUST be rendered as code classhighlighter-rouge>true/code> and code classhighlighter-rouge>false/code> strings, not as code classhighlighter-rouge>1/code> or code classhighlighter-rouge>0/code> numbers. If numbers are used the resulting CSV data is indistinguishable from actual integer numbers./li> li>code classhighlighter-rouge>Null/code>/code classhighlighter-rouge>nil/code> values MUST be rendered as empty strings./li> /ul> /li> li> p>When parsing input CSV data all forms of line breaks (CRLF, LF, and CR) MUST be supported./p> /li> li>When rendering output CSV data, CRLF MUST be used for line breaks to ensure maximum cross-platform compatibility./li> /ol> h2 idabout>About/h2> p>This CSV specification is authored by a hrefhttps://jimeh.me/>Jim Myhrberg/a>./p> p>If you’d like to leave feedback, please a hrefhttps://github.com/parsecsv/csv-spec/issues>open an issue on GitHub/a>./p> h2 idlicense>License/h2> p>a hrefhttp://creativecommons.org/publicdomain/zero/1.0/>CC0 1.0 Universal/a>/p> /div> /div> /div> script typetext/javascript src/assets/main-870855580c69dec57be4c965d0cf8afe78afa6b7b6f6bdb5aff91ac0256c0a1a.js>/script> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]