How to convert gfm task lists to plain lists
- Step 1Paste or drop your checklist Markdown — Paste the text or drop one
.md/.mdx/.markdownfile with GFM task lists. The tool takes a single file per run (acceptsMultipleis false). - Step 2Understand there is no checkbox-only switch — This is the GFM-to-CommonMark converter; it has no options (
needsOptions: false). Converting task lists also rewrites any~~strikethrough~~to<del>and angle-wraps bare URLs in the same pass. If your file has none of those, only the task lists change. - Step 3Run the conversion — Click Run. Each matched task-list line loses its
[ ]or[x]checkbox; the bullet and text remain. The match is anchored to line start (after optional indentation), so[ ]mid-sentence is never touched. - Step 4Check that state loss is acceptable — Both checked and unchecked items become identical plain bullets. If you need to keep which items were done, capture that information before converting (the output cannot distinguish
[ ]from[x]). - Step 5Verify nested and mixed-marker lists — Confirm indented sub-items kept their indentation and that
*/+bullets were handled. Uppercase[X]and ordered (1.) task items are NOT converted — see the edge cases. - Step 6Download the plain-list Markdown — Save as
.md. The output renders as ordinary bullet lists in any renderer. Output type ismarkdown.
Task-list matching rules
Exactly which task-item forms the converter strips, and which it leaves alone. The rule matches bullet markers + lowercase checkbox at the start of a line.
| Input | Converted? | Output |
|---|---|---|
- [ ] todo | Yes | - todo |
- [x] done | Yes | - done |
* [ ] todo | Yes | * todo |
+ [ ] todo | Yes | + todo |
- [x] nested | Yes | - nested (indent kept) |
- [X] DONE (uppercase) | No | - [X] DONE (unchanged) |
1. [ ] ordered | No | 1. [ ] ordered (unchanged) |
text [ ] mid-line | No | text [ ] mid-line (not at line start) |
Tier limits
Markdown-family per-file limits. Character count is enforced separately from byte size.
| Tier | Max file size | Max characters | Files per run |
|---|---|---|---|
| Free | 1 MB | 500,000 | 1 |
| Pro | 10 MB | 5,000,000 | 10 |
| Pro-media | 50 MB | 20,000,000 | 50 |
| Developer | 500 MB | Unlimited | Unlimited |
Cookbook
Before/after for common checklist shapes — flat lists, nested lists, and mixed-state items.
Flat checklist becomes plain bullets
Both checked and unchecked items collapse to plain bullets. The difference between done and not-done disappears.
Input: - [x] Write spec - [ ] Review PR - [ ] Ship Output: - Write spec - Review PR - Ship
Nested checklist keeps its indentation
The regex allows leading whitespace, so sub-items keep their indent — only the checkbox is removed at each level.
Input: - [x] Release - [x] Tag version - [ ] Publish notes Output: - Release - Tag version - Publish notes
Mixed bullet markers all convert
GFM allows -, *, and + for task lists, and so does the converter. Mixed-marker checklists convert consistently, each keeping its own marker.
Input: - [ ] dash * [x] star + [ ] plus Output: - dash * star + plus
Uppercase X checkbox is left untouched
The character class is [ x] — lowercase only. An uppercase [X] is not matched, so it survives. Lowercase it first if you want it stripped.
Input: - [X] Approved - [x] merged Output: - [X] Approved - merged
Strikethrough rides along in the same pass
There's no checkbox-only mode. A struck item is also rewritten to <del> while its checkbox is removed.
Input: - [ ] ~~old task~~ Output: - <del>old task</del>
Edge cases and what actually happens
Checkbox state is lost
By designBoth [ ] and [x] become a plain bullet with no marker. CommonMark plain lists cannot represent checked/unchecked state, so the distinction is unrecoverable from the output. If you need to keep which items were done, record that before converting — for example by keeping the original file or rendering it to HTML with a task-list-aware renderer first.
Uppercase `[X]` is not stripped
Not matchedThe regex character class is [ x] — it accepts a space or lowercase x only. - [X] item keeps its checkbox. GitHub itself treats [X] as checked, so source files commonly contain it. Lowercase your [X] to [x] before running the tool if you want a uniform result.
Ordered task items are not converted
Not matchedThe pattern matches only bullet markers (-, *, +). 1. [ ] step is left unchanged because GFM task lists are defined on bullet lists. If you have numbered checklists, convert the marker to a bullet or remove the [ ] manually.
Mid-line `[ ]` is never touched
PreservedThe match is anchored to the start of a line (after optional indentation). A [ ] appearing mid-sentence — for example in prose discussing array notation — is not a task item and is left alone. Only line-leading bullet+checkbox forms convert.
Nested indentation is preserved
PreservedThe leading \s* in the pattern captures and re-emits the indentation, so - [ ] deep item becomes - deep item. Nesting depth and list structure are kept; only the checkbox token is removed at each level.
Strikethrough and autolinks also change
ExpectedThis is the full GFM-to-CommonMark converter, not a task-list-only tool. The same run rewrites ~~text~~ to <del>text</del> and wraps bare URLs in <>. If your checklist contains struck items or bare links, expect those to change too. There is no way to disable the other two passes.
Loose checkbox spacing may not match
Not matchedThe pattern expects exactly [ ] or [x] (one space or one x between brackets) preceded by the bullet and whitespace. Malformed variants like [ ] (two spaces) or [ x] inside the brackets won't match GFM's own definition either and are left untouched. Normalise the checkbox token first.
Empty checklist items convert fine
SupportedAn item with a checkbox and no text (- [ ]) becomes a bare bullet (- ). That's valid Markdown — a list item with empty content. No error is raised.
Free-tier limits
413 size capFiles over 1 MB or 500,000 characters are rejected on the free tier; the limits are checked independently. A very long generated checklist could hit the character cap under 1 MB. Upgrade to Pro or split the file.
Frequently asked questions
Does this only convert task lists?
No. It is the GFM-to-CommonMark converter, so the same single pass also rewrites ~~strikethrough~~ to <del> and wraps bare URLs in <>. There is no checkbox-only mode. If your file has no strikethrough or bare URLs, then only the task lists change.
Will I lose which items were checked?
Yes. Both [ ] and [x] collapse to an identical plain bullet — CommonMark plain lists have no checkbox state. If completion status matters, keep the original or render it with a task-list-aware renderer before converting.
Are nested task lists handled?
Yes. The pattern allows leading whitespace, so indented sub-items convert while keeping their indentation. A nested - [ ] sub-task becomes - sub-task. The list structure is preserved; only checkboxes are removed.
What about uppercase `[X]`?
It is not converted. The regex matches [ ] and lowercase [x] only. - [X] keeps its checkbox. GitHub accepts uppercase, so source files often have it — lowercase to [x] first if you want it stripped.
Do ordered/numbered task lists convert?
No. Only bullet markers (-, *, +) are matched. 1. [ ] step keeps its [ ]. This follows GFM, which defines task lists on bullet lists. Convert the marker to a bullet manually if needed.
Can I keep the checkbox as text instead?
No — the tool always removes the checkbox token entirely; there are no options. If you want [x] to survive as literal text, don't run this tool on those lines, or re-add the brackets afterward with a find-replace tool.
Does it touch `[ ]` that appears in normal prose?
No. The match is anchored to the start of a line and requires a bullet marker before the checkbox. A [ ] in the middle of a sentence is not a task item and is left alone.
What output format do I get?
Markdown (.md). The task items become ordinary bullet lists that render in any Markdown renderer, including strict CommonMark.
Are mixed bullet markers (`-`, `*`, `+`) all supported?
Yes. The pattern matches any of the three bullet markers, and each item keeps its own marker in the output. A checklist mixing markers converts consistently.
Is my checklist uploaded?
No. The conversion runs in your browser using the shared converter engine. Your content is not sent to a server during conversion; only an anonymous processed-file counter is recorded for signed-in stats.
How big a file can I convert?
Free: 1 MB / 500,000 characters / 1 file. Pro: 10 MB / 5,000,000 / 10. Pro-media: 50 MB / 20,000,000 / 50. Developer: 500 MB with no character or file limit. The character limit is separate from byte size.
Why does an item with no text become a bare bullet?
An item like - [ ] with no text after the checkbox becomes - — a valid empty list item. That's expected behaviour, not an error; add text to the item if you want content.
Privacy first
All Markdown processing runs locally in your browser using JavaScript. No file is ever uploaded to JAD Apps servers — only metadata counters are saved for signed-in dashboard stats.