Convert TSV to RST

Drag and drop files here or click to select.
Max file size 100mb.
Uploading progress:

TSV vs RST Format Comparison

Aspect TSV (Source Format) RST (Target Format)
Format Overview
TSV
Tab-Separated Values

Plain text format for storing tabular data where columns are separated by tab characters. Clipboard-native format used extensively in bioinformatics and scientific computing. Simpler than CSV because tab characters rarely appear in data, eliminating quoting issues entirely.

Tabular Data Clipboard-Native
RST
reStructuredText

Lightweight markup language used primarily in the Python ecosystem for documentation. Features grid and simple table syntaxes, directives, cross-references, and role-based formatting. The standard format for Sphinx documentation and Python project docs on Read the Docs.

Documentation Python Ecosystem
Technical Specifications
Structure: Rows and columns in plain text
Delimiter: Tab character (U+0009)
Encoding: UTF-8, ASCII, or UTF-16
Headers: Optional first row as column names
Extensions: .tsv, .tab
Structure: Markup text with directives
Table Syntax: Grid tables or simple tables
Encoding: UTF-8
Processor: Docutils, Sphinx
Extensions: .rst, .rest
Syntax Examples

TSV uses tab-separated values:

Name	Language	Stars
Django	Python	72000
Flask	Python	64000
FastAPI	Python	58000

RST uses grid table syntax:

+---------+----------+-------+
| Name    | Language | Stars |
+=========+==========+=======+
| Django  | Python   | 72000 |
+---------+----------+-------+
| Flask   | Python   | 64000 |
+---------+----------+-------+
| FastAPI | Python   | 58000 |
+---------+----------+-------+
Content Support
  • Tabular data with rows and columns
  • Text, numbers, and dates
  • No quoting needed for commas or text
  • Direct clipboard paste compatibility
  • Large datasets (millions of rows)
  • Bioinformatics data standards
  • Grid tables with cell spanning
  • Simple tables for basic layouts
  • CSV-table and list-table directives
  • Cross-references and footnotes
  • Code blocks with syntax highlighting
  • Admonitions (note, warning, tip)
  • Table of contents generation
  • Math formulas (LaTeX syntax)
Advantages
  • No quoting issues unlike CSV
  • Clipboard-native: paste directly from spreadsheets
  • Standard in bioinformatics and genomics
  • Simpler parsing than CSV
  • Human-readable in any text editor
  • Minimal file size overhead
  • Standard for Python documentation
  • Powerful table formatting options
  • Sphinx integration for documentation sites
  • Read the Docs hosting support
  • Multi-format output (HTML, PDF, ePub)
  • Extensible directive system
  • Version control friendly (plain text)
Disadvantages
  • No formatting or styling
  • No data types (everything is text)
  • Tab characters in data require escaping
  • No multi-sheet support
  • No metadata or schema
  • Grid table syntax is verbose
  • Tables are hard to edit manually
  • Steeper learning curve than Markdown
  • Primarily Python ecosystem focused
  • Whitespace-sensitive syntax
Common Uses
  • Bioinformatics data exchange (BED, GFF)
  • Clipboard copy-paste operations
  • Database exports and imports
  • Scientific data processing
  • Spreadsheet data interchange
  • Python package documentation
  • Sphinx documentation projects
  • Read the Docs hosted content
  • API reference documentation
  • Technical specifications
  • PEP (Python Enhancement Proposals)
Best For
  • Data with commas in values
  • Clipboard-based workflows
  • Scientific and bioinformatics data
  • Simple tabular data storage
  • Python project documentation
  • Sphinx-based documentation sites
  • Technical writing with tables
  • Read the Docs publishing
Version History
Introduced: 1993 (IANA registration)
Standard: IANA text/tab-separated-values
Status: Widely used, stable
MIME Type: text/tab-separated-values
Introduced: 2001 (David Goodger)
Current Version: Docutils 0.20+
Status: Active, Python standard
MIME Type: text/x-rst
Software Support
Microsoft Excel: Full support
Google Sheets: Full support
LibreOffice Calc: Full support
Other: Python, R, pandas, all text editors
Sphinx: Full support (native)
Docutils: Full support (native)
GitHub: Basic rendering support
Other: Pandoc, VS Code, PyCharm, Read the Docs

Why Convert TSV to reStructuredText?

Converting TSV data to reStructuredText (RST) format transforms raw tab-separated tabular data into properly formatted documentation tables suitable for Python project documentation, Sphinx sites, and Read the Docs publishing. TSV's clipboard-native simplicity makes it the ideal starting point for data that needs to end up in technical documentation.

RST offers two table syntaxes: grid tables with full cell spanning support and simple tables for basic layouts. Our converter generates grid tables by default, which provide the most flexibility and render beautifully when processed by Sphinx or Docutils. The converter automatically calculates column widths based on content, aligns the grid borders, and formats headers with the distinctive === row separator.

This conversion is particularly valuable for Python developers who maintain documentation with Sphinx. Instead of manually constructing grid tables character by character, you can export data from a spreadsheet or database as TSV, convert it to RST, and include it directly in your .rst documentation files. The tab-separated format avoids the quoting issues that CSV would introduce.

TSV to RST conversion also supports the csv-table directive approach, where the converter can generate a Sphinx directive that references the data directly. This is useful for documentation that needs to stay synchronized with regularly updated data sources. The bioinformatics community, which heavily uses TSV, frequently needs to document data schemas and sample outputs in RST format.

Key Benefits of Converting TSV to RST:

  • Grid Tables: Generates properly aligned RST grid tables with borders
  • Auto Column Widths: Column widths calculated from content for optimal display
  • Header Detection: First row formatted as table header with === separator
  • Sphinx Ready: Output integrates directly into Sphinx documentation projects
  • No Quoting Issues: TSV avoids CSV's comma-in-data problems
  • Read the Docs: Generated RST renders perfectly on Read the Docs
  • Data Integrity: All cell values preserved exactly from the original TSV

Practical Examples

Example 1: Python Package Dependencies

Input TSV file (dependencies.tsv):

Package	Version	Purpose
Django	>=4.2	Web framework
celery	>=5.3	Task queue
redis	>=4.5	Cache backend
psycopg2	>=2.9	PostgreSQL adapter

Output RST file (dependencies.rst):

+----------+---------+--------------------+
| Package  | Version | Purpose            |
+==========+=========+====================+
| Django   | >=4.2   | Web framework      |
+----------+---------+--------------------+
| celery   | >=5.3   | Task queue         |
+----------+---------+--------------------+
| redis    | >=4.5   | Cache backend      |
+----------+---------+--------------------+
| psycopg2 | >=2.9   | PostgreSQL adapter |
+----------+---------+--------------------+

Example 2: API Endpoint Reference

Input TSV file (api_reference.tsv):

Method	Endpoint	Description	Auth
GET	/api/v2/users	List all users	Token
POST	/api/v2/users	Create user	Token
GET	/api/v2/health	Health check	None

Output RST file (api_reference.rst):

+--------+----------------+----------------+-------+
| Method | Endpoint       | Description    | Auth  |
+========+================+================+=======+
| GET    | /api/v2/users  | List all users | Token |
+--------+----------------+----------------+-------+
| POST   | /api/v2/users  | Create user    | Token |
+--------+----------------+----------------+-------+
| GET    | /api/v2/health | Health check   | None  |
+--------+----------------+----------------+-------+

Example 3: Genomic Annotation Data

Input TSV file (genes.tsv):

Gene	Chromosome	Start	End	Strand
BRCA1	chr17	43044295	43125483	-
TP53	chr17	7668402	7687550	-
EGFR	chr7	55019017	55211628	+

Output RST file (genes.rst):

+-------+------------+----------+----------+--------+
| Gene  | Chromosome | Start    | End      | Strand |
+=======+============+==========+==========+========+
| BRCA1 | chr17      | 43044295 | 43125483 | -      |
+-------+------------+----------+----------+--------+
| TP53  | chr17      | 7668402  | 7687550  | -      |
+-------+------------+----------+----------+--------+
| EGFR  | chr7       | 55019017 | 55211628 | +      |
+-------+------------+----------+----------+--------+

Frequently Asked Questions (FAQ)

Q: What is reStructuredText (RST)?

A: reStructuredText is a lightweight markup language used primarily for Python documentation. It is processed by Docutils and Sphinx to generate HTML, PDF, ePub, and other formats. RST supports tables, cross-references, code blocks, admonitions, and many other documentation features. It is the standard format for Python project documentation hosted on Read the Docs.

Q: What table format does the converter generate?

A: The converter generates RST grid tables, which use +, -, and | characters to create a visual table grid. Grid tables support the full range of RST table features including header rows (marked with = characters), cell spanning, and mixed content. Grid tables are the most versatile RST table format and render correctly in all RST processors.

Q: Why use TSV instead of CSV for RST conversion?

A: TSV is preferred because tab characters are unambiguous delimiters that rarely appear in data. CSV requires quoting when values contain commas, which can complicate parsing. TSV data can be copied directly from spreadsheets (clipboard format is TSV), making it the most natural format for data that originates in spreadsheet applications.

Q: Can I use the output directly in Sphinx documentation?

A: Yes! The generated RST table follows standard reStructuredText syntax and can be pasted directly into any .rst file in your Sphinx documentation project. The table will render correctly when building with sphinx-build and will display properly on Read the Docs or any other Sphinx-based documentation hosting.

Q: How are column widths determined?

A: Column widths are automatically calculated based on the maximum content width in each column, including the header row. The converter ensures that all cell content fits within the grid without truncation. If content varies significantly in length, columns are sized proportionally to provide optimal readability.

Q: Is there a limit on table size?

A: There is no hard limit on rows or columns. However, RST grid tables with many columns can become very wide, which may affect readability in documentation. For very wide tables, consider using the csv-table directive in Sphinx instead, or splitting the data into multiple narrower tables. Very long tables are supported but may benefit from pagination in the final documentation.

Q: Does the converter handle Unicode characters?

A: Yes, the converter fully supports UTF-8 encoded TSV files with Unicode characters. The grid table alignment is calculated correctly for multi-byte characters, ensuring that the table borders line up properly even with non-ASCII content like CJK characters, accented letters, or special symbols.

Q: Can I convert TSV to RST and then to PDF?

A: Yes! You can convert TSV to RST first, include the table in a Sphinx project, and then build a PDF using Sphinx's LaTeX builder or rst2pdf. Alternatively, you can use our TSV to PDF converter directly. The RST intermediate step gives you full control over the surrounding documentation context.