Network Working Group D. Ra Internet-Draft 15 September 2026 Intended status: Informational Expires: 19 March 2027 Multi-Sheet Tab-Separated Values (MTSV) draft-demos-ra-mtsv-00 Abstract This document defines Multi-Sheet Tab-Separated Values (MTSV), a text format that carries one or more sheets of tab-separated values in a single file. MTSV is TSV with one additional dimension: sheets are separated by the ASCII form feed (FF) character. A TSV file that contains no FF, and no CR other than in CRLF line breaks, is an MTSV file. This document also registers the text/prs.mtsv media type. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on 19 March 2027. Copyright Notice Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/ license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License. Ra Expires 19 March 2027 [Page 1] Internet-Draft MTSV September 2026 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Relationship to TSV . . . . . . . . . . . . . . . . . . . 2 1.2. Out of Scope . . . . . . . . . . . . . . . . . . . . . . 3 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 3 3. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 4 4. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4.1. Character Encoding . . . . . . . . . . . . . . . . . . . 4 4.2. Separators . . . . . . . . . . . . . . . . . . . . . . . 4 4.3. Sheet Name . . . . . . . . . . . . . . . . . . . . . . . 5 4.4. Grammar . . . . . . . . . . . . . . . . . . . . . . . . . 5 5. Parsers . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6. Generators . . . . . . . . . . . . . . . . . . . . . . . . . 6 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7.1. Single Sheet . . . . . . . . . . . . . . . . . . . . . . 6 7.2. Multiple Sheets . . . . . . . . . . . . . . . . . . . . . 6 7.3. Empty Sheet . . . . . . . . . . . . . . . . . . . . . . . 7 8. Interoperability Considerations . . . . . . . . . . . . . . . 7 9. Security Considerations . . . . . . . . . . . . . . . . . . . 8 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 10.1. Media Type Registration . . . . . . . . . . . . . . . . 8 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 11.1. Normative References . . . . . . . . . . . . . . . . . . 9 11.2. Informative References . . . . . . . . . . . . . . . . . 10 Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 11 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 1. Introduction The tab-separated values format [TSV] encodes one set of records per file. Fields are separated by a tab, and records are separated by line breaks. Both separators are ASCII format effectors [RFC20]. HT moves "to the next in a series of predetermined positions along the printing line", and LF moves "to the next printing line". MTSV adds FF, the format effector for the next larger unit, which moves "to the first pre- determined printing line on the next form or page". Tab gives the next field, line feed gives the next record, and form feed gives the next sheet. 1.1. Relationship to TSV MTSV keeps the separators and structure of TSV, and adds only one separator, FF, and a name for each sheet. MTSV does not carry over these restrictions of the TSV grammar: Ra Expires 19 March 2027 [Page 2] Internet-Draft MTSV September 2026 * A field can be empty, and a record can consist of a single field, as in [RFC4180]. * A sheet can consist of a header with no records, or of no lines at all, as a sheet can have no rows in [OOXML]. A TSV file that contains no FF, and no CR other than in CRLF line breaks, is an MTSV file (Section 3). 1.2. Out of Scope This document does not define data types, formulas, formatting, cell references, or metadata. Conversion to and from spreadsheet formats such as [ODF] and [OOXML] is also out of scope. 2. Conventions and Definitions The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. The grammar in this document uses ABNF [RFC5234], including its core rules HTAB, LF, and CRLF. In examples, denotes the tab character (%x09), as in [TSV], and denotes the form feed character (%x0C). Line breaks are shown as line breaks; every line shown, including the last, ends with a line break. This document uses the following terms: field: A text value, as defined in [TSV]. record: A sequence of fields on one line, as defined in [TSV]. header: The first record of a sheet, which contains the name of each field, as defined in [TSV]. sheet: A header followed by zero or more records, or no lines at all (an empty sheet). The term matches the corresponding structure in [OOXML]. sheet name: The text that follows an FF on the same line. unnamed sheet: The sheet formed by the lines before the first FF, or Ra Expires 19 March 2027 [Page 3] Internet-Draft MTSV September 2026 by all lines of a file that contains no FF. It exists only if there is at least one such line. MTSV file: A sequence of sheets, conforming to Section 4. TSV file: A file conforming to [TSV]. generator: An implementation that writes MTSV files. parser: An implementation that reads MTSV files. 3. Data Model A field is text. A record is an ordered sequence of fields. A sheet is a header and an ordered sequence of zero or more records. Every record in a sheet has as many fields as the header of that sheet. A sheet with no lines is an empty sheet; it has neither a header nor records. An MTSV file is an ordered sequence of sheets. The order of the sheets is the order in which they appear in the file. Every sheet has a sheet name, except the unnamed sheet. An MTSV file has an unnamed sheet only if the file contains at least one line before the first FF. An empty sheet name is permitted. Sheet names are not required to be unique. A TSV file that contains no FF, and no CR other than in CRLF line breaks, is an MTSV file that consists of exactly one unnamed sheet. 4. Syntax 4.1. Character Encoding An MTSV file is text in the character set identified by the charset parameter (Section 10.1). If the parameter is absent, the character set is UTF-8 [RFC3629]. The grammar below is expressed in terms of characters after decoding. 4.2. Separators MTSV uses three separators, all of which are ASCII format effectors [RFC20]: Ra Expires 19 March 2027 [Page 4] Internet-Draft MTSV September 2026 +============+=============================+===========+=========+ | Separator | Character | Separates | Source | +============+=============================+===========+=========+ | tab | HT (%x09) | fields | [TSV] | +------------+-----------------------------+-----------+---------+ | line break | LF (%x0A) or CRLF (%x0D.0A) | records | [TSV] | +------------+-----------------------------+-----------+---------+ | form feed | FF (%x0C) | sheets | [RFC20] | +------------+-----------------------------+-----------+---------+ Table 1 An FF appears only at the start of a line. 4.3. Sheet Name A sheet name is written on the line that begins with an FF, directly after the FF, and ends at the line break. A sheet name follows the same rules as a field: it cannot contain HT, LF, FF, or CR. 4.4. Grammar mtsv-file = unnamed-sheet *named-sheet unnamed-sheet = sheet-body named-sheet = FF sheet-name eol sheet-body sheet-body = [header *record] header = record record = field *(HTAB field) eol field = *field-char sheet-name = *field-char field-char = %x00-08 / %x0B / %x0E-10FFFF ; any character except HTAB, LF, FF, and CR FF = %x0C eol = LF / CRLF In addition to matching the grammar, each record in a sheet MUST have the same number of fields as the header of that sheet, as required by [TSV]. 5. Parsers An MTSV parser MUST accept every MTSV file that conforms to Section 4. A parser MUST treat the lines before the first FF, if any, as the unnamed sheet, and each line that begins with an FF as the start of a new sheet. Ra Expires 19 March 2027 [Page 5] Internet-Draft MTSV September 2026 A parser MUST accept both LF and CRLF as line breaks, consistent with the default line terminators in [CSVW]. A parser MAY accept a final record that is not followed by a line break, consistent with [RFC4180]. A parser MAY ignore a byte order mark at the start of a file, consistent with Section 8.1 of [RFC8259]. A parser MAY accept input that does not conform to this document. An implementation MAY set limits on the size of files, the number of sheets, records, and fields, and the length of fields and sheet names, consistent with Section 9 of [RFC8259]. 6. Generators An MTSV generator MUST produce MTSV files that conform to Section 4. A generator MUST end every record with a line break. A generator SHOULD encode MTSV files in UTF-8, consistent with [RFC2277], and MUST NOT add a byte order mark, consistent with Section 8.1 of [RFC8259]. A field or sheet name that contains HT, LF, FF, or CR cannot be represented in MTSV, as with fields that contain a tab in [TSV]. A generator MUST NOT write such a value. How a generator handles such values is out of scope. 7. Examples 7.1. Single Sheet This is the example from [TSV]. It is both a TSV file and an MTSV file with one unnamed sheet. NameAgeAddress Paul231115 W Franklin Bessy the Cow5Big Farm Way Zeke45W Main St 7.2. Multiple Sheets This MTSV file contains two sheets, named "People" and "Animals". Ra Expires 19 March 2027 [Page 6] Internet-Draft MTSV September 2026 People NameAgeAddress Paul231115 W Franklin Zeke45W Main St Animals NameAgeAddress Bessy the Cow5Big Farm Way 7.3. Empty Sheet This MTSV file contains an unnamed sheet, an empty sheet named "Empty", and a sheet named "Animals". NameAge Paul23 Empty Animals NameAge Bessy the Cow5 8. Interoperability Considerations Section 1.1 describes which TSV files are MTSV files. This section describes how common text processing affects MTSV files. MTSV gives structure to four characters: HT, LF, FF, and CR. These characters also have other standard properties, and text processing that acts on those properties can change the structure of an MTSV file: Line splitting: FF has the mandatory break class in [UAX14]. An application that supports only TSV can present a line that begins with an FF either as a record whose first field begins with FF, or as an empty line followed by a line that contains the sheet name. Whitespace: HT, LF, FF, and CR have the White_Space property in [UCD]. Trimming whitespace from a line can remove an FF, which turns a sheet name into a record, or remove an HT at either end of a line, which removes empty fields. Splitting a line on runs of whitespace removes empty fields and splits fields that contain spaces. Tab expansion: Replacing HT with spaces removes the field structure, as it does for [TSV]. Control characters: FF is a control character. Applications that Ra Expires 19 March 2027 [Page 7] Internet-Draft MTSV September 2026 remove or reject control characters remove sheet boundaries. [XML] does not permit FF, so an MTSV file cannot be carried as XML 1.0 character data without an additional encoding. Line endings: Converting between LF and CRLF does not change the structure of an MTSV file (Section 5). Converting line breaks to CR alone produces a file that does not conform to this document. Concatenation: Concatenating MTSV files produces an MTSV file that contains the sheets of each file, in order, only if each non-empty file ends with a line break and each non-empty file after the first begins with an FF. Otherwise, the unnamed sheet of a later file becomes part of the last sheet of the file before it. Unchanged structure: Printing, Unicode normalization, and conversion between character sets do not change the structure of an MTSV file. Spreadsheets: Spreadsheet applications apply their own rules to sheet names, such as uniqueness and length, and to data types and sizes. These rules are outside the scope of this document. 9. Security Considerations MTSV files are text and contain no executable content. [TSV] lists no security considerations. Applications that import MTSV files into spreadsheets can interpret fields that begin with characters such as "=", "+", "-", or "@" as formulas. Such applications need to treat imported fields as data. Sheet names can contain control characters. Applications that display sheet names need to take care that such characters do not mislead users. Parsers that do not set limits (Section 5) can exhaust resources when reading large files or files with very many sheets. 10. IANA Considerations 10.1. Media Type Registration This document registers the text/prs.mtsv media type in the personal tree, according to Section 3.3 of [RFC6838], using the template in Section 5.6 of [RFC6838]. Type name: text Ra Expires 19 March 2027 [Page 8] Internet-Draft MTSV September 2026 Subtype name: prs.mtsv Required parameters: None Optional parameters: charset. MTSV has no in-band charset information, so a default is needed; if charset is absent, UTF-8 is assumed, as Section 3 of [RFC6657] specifies for text subtypes that define a default. Encoding considerations: 8bit. As per Section 4.1.1 of [RFC2046], this media type uses CRLF to denote line breaks in transport. Implementations need to be aware that files often use LF alone. Security considerations: See Section 9. Interoperability considerations: See Section 8. Published specification: This document. Applications that use this media type: Applications that store or exchange multiple sheets of tabular data as text. Fragment identifier considerations: None Additional information: Deprecated alias names for this type: None Magic number(s): None File extension(s): .mtsv Macintosh file type code(s): None Person & email address to contact for further information: Demos Ra (demos_ra@hotmail.com) Intended usage: COMMON Restrictions on usage: None Author: Demos Ra Change controller: Demos Ra 11. References 11.1. Normative References Ra Expires 19 March 2027 [Page 9] Internet-Draft MTSV September 2026 [RFC20] Cerf, V., "ASCII format for network interchange", STD 80, RFC 20, DOI 10.17487/RFC20, October 1969, . [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November 2003, . [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, DOI 10.17487/RFC5234, January 2008, . [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type Specifications and Registration Procedures", BCP 13, RFC 6838, DOI 10.17487/RFC6838, January 2013, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . [TSV] University of Minnesota Internet Gopher Team, "text/tab- separated-values", n.d., . 11.2. Informative References [CSVW] W3C, "Model for Tabular Data and Metadata on the Web", 17 December 2015, . [ODF] OASIS, "Open Document Format for Office Applications (OpenDocument) Version 1.3", 27 April 2021, . [OOXML] ISO/IEC, "Information technology - Document description and processing languages - Office Open XML File Formats - Part 1: Fundamentals and Markup Language Reference", ISO/ IEC 29500-1:2016, 2016. Ra Expires 19 March 2027 [Page 10] Internet-Draft MTSV September 2026 [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, DOI 10.17487/RFC2046, November 1996, . [RFC2277] Alvestrand, H., "IETF Policy on Character Sets and Languages", BCP 18, RFC 2277, DOI 10.17487/RFC2277, January 1998, . [RFC4180] Shafranovich, Y., "Common Format and MIME Type for Comma- Separated Values (CSV) Files", RFC 4180, DOI 10.17487/RFC4180, October 2005, . [RFC6657] Melnikov, A. and J. Reschke, "Update to MIME regarding "charset" Parameter Handling in Textual Media Types", RFC 6657, DOI 10.17487/RFC6657, July 2012, . [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data Interchange Format", STD 90, RFC 8259, DOI 10.17487/RFC8259, December 2017, . [UAX14] Unicode Consortium, "Unicode Line Breaking Algorithm", n.d., . [UCD] Unicode Consortium, "Unicode Character Database", n.d., . [XML] W3C, "Extensible Markup Language (XML) 1.0 (Fifth Edition)", 26 November 2008, . Appendix A. Change Log This section is to be removed before publishing as an RFC. draft-demos-ra-mtsv-00: Initial version. Author's Address Demos Ra Email: demos_ra@hotmail.com Ra Expires 19 March 2027 [Page 11]