CSV To Textile Table

Login

Email
Password

Don't have an account yet?

Go to Sign up

{{ workbook ? 'Online Table Editor' : 'Input Data' }}
Change File Enter Data
Row Col Row Col
Transpose Clear Delete Empty Deduplicate
ABC abc Abc
Replace
First Row as Header
{{ displayRows.length }} rows x {{ displayHeaders.length }} columns{{ firstRowAsHeader ? ' (1 header)' : '' }} {{ selectedRows.length > 0 ? selectedRows.length + ' selected' : '' }}
Output Data
{{ copied ? 'Copied!' : 'Copy to Clipboard' }} Download File
Properties
Convert CSV to Textile online — paste, edit, and download Textile.

Escape Characters:
Escape Textile syntax characters (|, ., -, ^)
Row Header:
Format first column as row header (bold)
Table Head Syntax:
Wrap first row with Textile heading syntax
Convert Restart
Insert Row Below
Insert Row Above
Insert Column Right
Insert Column Left
Delete Row {{ contextMenu.row + 1 }}
Delete Column {{ contextMenu.col + 1 }}
Clear Cell
Clear Row
Case sensitive Use regex Cancel Replace All

CSV to Textile Table — Free Online Textile Markup Generator

What Is Textile?

Textile is a lightweight markup language created by Dean Allen in 2002 for the Textpattern CMS. It provides a shorthand for formatting text, tables, lists, links, and images — similar to Markdown but with different syntax conventions.

Where Textile Is Used

PlatformTypeTextile Usage
RedmineIssue trackerIssue descriptions, comments, wiki pages
TextpatternCMSArticle body content
Basecamp ClassicProject managementMessages, comments (Basecamp 2+ uses Markdown)
GitHub Issues (legacy)Code hostingSome older repositories still support Textile
Ruby-based forumsDiscussionSome Ruby community forums use Textile
PublifyBlog engineBlog post content

Redmine is the most actively maintained platform using Textile as its primary markup language.

Textile Table Syntax

Basic Table

|_. Name |_. Age |_. City |

| Alice | 30 | New York |

| Bob | 25 | London |

| Charlie | 35 | Tokyo |

Textile Table Elements

ElementSyntaxDescription
Header cell|_. text |Underscore-period prefix — bold header
Data cell| text |Pipe-delimited regular cell
Row header|_. text | in first columnBold first column (row label)
Cell spanning|/2| textRowspan (span 2 rows)
Column spanning`\2. text`
Cell alignment`>. right |`
Cell alignment`=. center |`
Table attributestable(class).CSS class on table
Row attributes(class).CSS class on row

Textile vs. Markdown Tables

FeatureTextileMarkdown (GFM)
Header cells|_. Header |First row bold, separator ---
Data cells| data || data |
Row headers|_. label | first colNot supported
Colspan|\2. textNot in GFM
Rowspan|/2. textNot in GFM
Cell alignment>. =. prefixes:---: ---: syntax
Bold cell|*. text||**text**|
Best forRedmine, TextpatternGitHub, DevOps

Why Convert CSV to Textile Tables?

Use CaseDescription
Redmine issue descriptionsPaste data tables into Redmine bugs, features, and wiki pages
Redmine wikiCreate formatted tables in Redmine project wikis
Textpattern articlesEmbed data tables in Textpattern CMS content
Basecamp messagesFormat data in Basecamp Classic project messages
Issue trackingPresent test results, metrics, or comparison data in Redmine tickets
MigrationMove spreadsheet data into Redmine wiki pages
Sprint reviewsEmbed sprint metrics in Redmine agile boards

Core Features

1. Online Table Editor

After loading CSV data, an interactive spreadsheet grid lets you edit before converting:

OperationDescription
TransposeSwap rows and columns
ClearRemove all data
Delete EmptyRemove empty rows/columns
DeduplicateRemove duplicate rows
ReplaceFind and replace (with regex support)
Case transformUPPERCASE, lowercase, Title Case
Insert/deleteRight-click for row/column operations
First Row as HeaderToggle header treatment

2. Escape Characters

Escapes Textile syntax characters to prevent them from being interpreted as formatting commands:

CharacterEscaped FormPurpose
|EscapedPrevents premature cell boundaries
.EscapedPrevents Textile class/attribute syntax
-EscapedPrevents list syntax
^EscapedPrevents superscript syntax

Enable this when your CSV data contains characters that Textile would interpret as formatting (e.g., pipe characters in descriptions, periods at start of cells).

3. Row Header

Formats the first column of each row as a row header (bold), using |_. syntax:

Enabled:

|_. Metric |_. Value |

|_. Revenue | $1,000,000 |

|_. Customers | 500 |

Disabled:

|_. Metric |_. Value |

| Revenue | $1,000,000 |

| Customers | 500 |

Use this when the first column contains row labels or category names (e.g., metric names, product names, field labels).

4. Table Head Syntax

Wraps the first row with Textile heading syntax (|_. instead of |):

Enabled:

|_. Name |_. Age |_. City |

| Alice | 30 | New York |

| Bob | 25 | London |

Disabled:

| Name | Age | City |

| Alice | 30 | New York |

| Bob | 25 | London |

Enable this for most cases — Textile tables with header rows are more readable and semantically correct.

5. Privacy by Design

All processing runs entirely in your browser. No data is uploaded to any server.

How to Use This Tool

Step 1: Load CSV Data

Choose one of two input methods:

  • Upload a file: Click "Choose File" and select a .csv file.

  • Paste data: Click "Enter Data" to switch to the code editor. Paste your CSV.

Step 2: Edit in Table Editor (Optional)

Use the toolbar to clean your data before converting.

Step 3: Configure Output

Use the Properties panel:

  1. Escape Characters: Enable if data contains |, ., -, or ^

  2. Row Header: Enable to bold the first column

  3. Table Head Syntax: Enable to format the first row as headers

Step 4: Convert

Click Convert. The Textile markup appears in the "Output Data" panel.

Step 5: Copy or Download

  • Click Copy to Clipboard to paste into Redmine, Textpattern, or Basecamp.

  • Premium users can click Download File to save.

Complete Example

Example — Redmine Bug Report

Input CSV:

test_case,expected,actual,status

Login - valid creds,Redirect to dashboard,Redirect to dashboard,Pass

Login - invalid pwd,Show error message,Show error message,Pass

Login - SQL injection,Show error message,Server 500,Fail

Login - expired token,Redirect to login,Redirect to login,Pass

Configuration:

  • Escape Characters: Off

  • Row Header: Off

  • Table Head Syntax: On

Output:

|_. test_case |_. expected |_. actual |_. status |

| Login - valid creds | Redirect to dashboard | Redirect to dashboard | Pass |

| Login - invalid pwd | Show error message | Show error message | Pass |

| Login - SQL injection | Show error message | Server 500 | Fail |

| Login - expired token | Redirect to login | Redirect to login | Pass |

Paste this into a Redmine issue description for a formatted test results table.

Example — Metrics with Row Headers

Input CSV:

metric,q1,q2,q3,q4

revenue,1000000,1200000,1150000,1400000

customers,500,550,580,620

churn_rate,5.2%,4.8%,4.5%,3.9%

nps,42,45,48,52

Configuration:

  • Row Header: On

  • Table Head Syntax: On

Output:

|_. metric |_. q1 |_. q2 |_. q3 |_. q4 |

|_. revenue | 1000000 | 1200000 | 1150000 | 1400000 |

|_. customers | 500 | 550 | 580 | 620 |

|_. churn_rate | 5.2% | 4.8% | 4.5% | 3.9% |

|_. nps | 42 | 45 | 48 | 52 |

Example — Server Inventory for Redmine Wiki

Input CSV:

server,ip,role,status,uptime

web-01,10.0.1.10,web server,running,99.9%

web-02,10.0.1.11,web server,running,99.8%

db-01,10.0.2.10,database,running,99.99%

cache-01,10.0.3.10,redis cache,maintenance,98.5%

Configuration:

  • Escape Characters: On (IP addresses contain periods)

  • Table Head Syntax: On

Output:

|_. server |_. ip |_. role |_. status |_. uptime |

| web-01 | 10.0.1.10 | web server | running | 99.9% |

| web-02 | 10.0.1.11 | web server | running | 99.8% |

| db-01 | 10.0.2.10 | database | running | 99.99% |

| cache-01 | 10.0.3.10 | redis cache | maintenance | 98.5% |

Textile Quick Reference (Beyond Tables)

FormattingSyntaxRendered
Bold*bold*bold
Italic_italic_italic
Underline+underline+underline
Strikethrough-deleted-deleted
Code@code@code
Heading 1h1. HeadingLarge heading
Heading 2h2. HeadingMedium heading
Bullet list* item• item
Numbered list# item1. item
Link"text":urlClickable link
Image!url!Embedded image
Blockquotebq. textQuoted text
Code blockbc. codeMonospace block

Frequently Asked Questions (FAQ)

  • Does the tool upload my data?

    No. All conversion happens locally in your browser using JavaScript. Your data never leaves your device.

  • What is Textile?

    Textile is a lightweight markup language used in Redmine, Textpattern CMS, and Basecamp Classic. It uses pipe-based syntax for tables and shorthand for text formatting.

  • Where can I paste the output?

    Paste the generated Textile markup into Redmine issue descriptions, wiki pages, or comments; Textpattern article bodies; or Basecamp Classic messages.

  • What does Table Head Syntax do?

    It wraps the first row with Textile heading syntax (|_.) to create bold column headers. Enable this for most tables.

  • What does Row Header do?

    It formats the first column of each data row as a row header (bold) using |_. syntax. Use this when the first column contains row labels or category names.

  • What does Escape Characters do?

    It escapes Textile syntax characters (|, ., -, ^) in your data so they render as literal text instead of being interpreted as formatting commands. Enable when data contains these characters.

  • Can I use this with Redmine?

    Yes. Redmine uses Textile as its default markup language. The output can be pasted directly into Redmine issues, wikis, and comments.

  • Can I edit the data before converting?

    Yes. The built-in table editor lets you modify cells, transpose, deduplicate, find/replace, change case, and insert/delete rows and columns.

  • What CSV formats are supported?

    Standard CSV with comma delimiters. The first row can be used as column headers (enable "First Row as Header").

  • Is there a file size limit?

    The tool processes data entirely in your browser. Files up to 10 MB typically convert without issues on modern hardware.

Featured Tools

Featured tools that you might find useful.

Popular Tools

List of popular tools that users love and frequently use.

New Tools

The latest tools added to our collection, designed for you.

Topics

The tools grouped by topics to quickly find what you need.
Free online Excel to JSON converter. Transform XLSX, XLS, XLSM files into JSON arrays, objects, or keyed formats instantly in your browser — no upload, 100% private.

Excel To JSON

Free online Excel to JSON converter. Transform XLSX, XLS, XLSM files into JSON arrays, objects, or keyed formats instantly in your browser — no upload, 100% private.
Free Excel to CSV converter. Convert XLSX, XLS, XLSM to CSV instantly in your browser. No upload, 100% private. Edit, transpose, deduplicate before exporting.

Excel To CSV

Free Excel to CSV converter. Convert XLSX, XLS, XLSM to CSV instantly in your browser. No upload, 100% private. Edit, transpose, deduplicate before exporting.
Free online Excel to SQL converter. Generate CREATE TABLE and INSERT statements from spreadsheets for MySQL, PostgreSQL, SQLite, and SQL Server. Supports batch insert, primary keys, and type inference.

Excel To SQL

Free online Excel to SQL converter. Generate CREATE TABLE and INSERT statements from spreadsheets for MySQL, PostgreSQL, SQLite, and SQL Server. Supports batch insert, primary keys, and type inference.
Free online Excel to ASCII table converter with 10 border styles (MySQL, Unicode, reStructuredText, and more). Add code comment wrappers in 8 languages. Supports text alignment. Client-side processing.

Excel To ASCII Table

Free online Excel to ASCII table converter with 10 border styles (MySQL, Unicode, reStructuredText, and more). Add code comment wrappers in 8 languages. Supports text alignment. Client-side processing.