Go to Sign up
Note: Your files never leave your device. We don't upload, transfer, or store your data.
|
|
|
|
|---|---|---|
|
|
|
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.
| Platform | Type | Textile Usage |
|---|---|---|
| Redmine | Issue tracker | Issue descriptions, comments, wiki pages |
| Textpattern | CMS | Article body content |
| Basecamp Classic | Project management | Messages, comments (Basecamp 2+ uses Markdown) |
| GitHub Issues (legacy) | Code hosting | Some older repositories still support Textile |
| Ruby-based forums | Discussion | Some Ruby community forums use Textile |
| Publify | Blog engine | Blog post content |
Redmine is the most actively maintained platform using Textile as its primary markup language.
|_. Name |_. Age |_. City |
| Alice | 30 | New York |
| Bob | 25 | London |
| Charlie | 35 | Tokyo |
| Element | Syntax | Description |
|---|---|---|
| Header cell | |_. text | | Underscore-period prefix — bold header |
| Data cell | | text | | Pipe-delimited regular cell |
| Row header | |_. text | in first column | Bold first column (row label) |
| Cell spanning | |/2| text | Rowspan (span 2 rows) |
| Column spanning | ` | \2. text` |
| Cell alignment | ` | >. right |` |
| Cell alignment | ` | =. center |` |
| Table attributes | table(class). | CSS class on table |
| Row attributes | (class). | CSS class on row |
| Feature | Textile | Markdown (GFM) |
|---|---|---|
| Header cells | |_. Header | | First row bold, separator --- |
| Data cells | | data | | | data | |
| Row headers | |_. label | first col | Not supported |
| Colspan | |\2. text | Not in GFM |
| Rowspan | |/2. text | Not in GFM |
| Cell alignment | >. =. prefixes | :---: ---: syntax |
| Bold cell | |*. text| | |**text**| |
| Best for | Redmine, Textpattern | GitHub, DevOps |
| Use Case | Description |
|---|---|
| Redmine issue descriptions | Paste data tables into Redmine bugs, features, and wiki pages |
| Redmine wiki | Create formatted tables in Redmine project wikis |
| Textpattern articles | Embed data tables in Textpattern CMS content |
| Basecamp messages | Format data in Basecamp Classic project messages |
| Issue tracking | Present test results, metrics, or comparison data in Redmine tickets |
| Migration | Move spreadsheet data into Redmine wiki pages |
| Sprint reviews | Embed sprint metrics in Redmine agile boards |
After loading CSV data, an interactive spreadsheet grid lets you edit before converting:
| Operation | Description |
|---|---|
| Transpose | Swap rows and columns |
| Clear | Remove all data |
| Delete Empty | Remove empty rows/columns |
| Deduplicate | Remove duplicate rows |
| Replace | Find and replace (with regex support) |
| Case transform | UPPERCASE, lowercase, Title Case |
| Insert/delete | Right-click for row/column operations |
| First Row as Header | Toggle header treatment |
Escapes Textile syntax characters to prevent them from being interpreted as formatting commands:
| Character | Escaped Form | Purpose |
|---|---|---|
| | Escaped | Prevents premature cell boundaries |
. | Escaped | Prevents Textile class/attribute syntax |
- | Escaped | Prevents list syntax |
^ | Escaped | Prevents 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).
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).
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.
All processing runs entirely in your browser. No data is uploaded to any server.
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.
Use the toolbar to clean your data before converting.
Use the Properties panel:
Escape Characters: Enable if data contains |, ., -, or ^
Row Header: Enable to bold the first column
Table Head Syntax: Enable to format the first row as headers
Click Convert. The Textile markup appears in the "Output Data" panel.
Click Copy to Clipboard to paste into Redmine, Textpattern, or Basecamp.
Premium users can click Download File to save.
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.
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 |
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% |
| Formatting | Syntax | Rendered |
|---|---|---|
| Bold | *bold* | bold |
| Italic | _italic_ | italic |
| Underline | +underline+ | underline |
| Strikethrough | -deleted- | deleted |
| Code | @code@ | code |
| Heading 1 | h1. Heading | Large heading |
| Heading 2 | h2. Heading | Medium heading |
| Bullet list | * item | • item |
| Numbered list | # item | 1. item |
| Link | "text":url | Clickable link |
| Image | !url! | Embedded image |
| Blockquote | bq. text | Quoted text |
| Code block | bc. code | Monospace block |
No. All conversion happens locally in your browser using JavaScript. Your data never leaves your device.
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.
Paste the generated Textile markup into Redmine issue descriptions, wiki pages, or comments; Textpattern article bodies; or Basecamp Classic messages.
It wraps the first row with Textile heading syntax (|_.) to create bold column headers. Enable this for most tables.
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.
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.
Yes. Redmine uses Textile as its default markup language. The output can be pasted directly into Redmine issues, wikis, and comments.
Yes. The built-in table editor lets you modify cells, transpose, deduplicate, find/replace, change case, and insert/delete rows and columns.
Standard CSV with comma delimiters. The first row can be used as column headers (enable "First Row as Header").
The tool processes data entirely in your browser. Files up to 10 MB typically convert without issues on modern hardware.