Literal-string prefix/suffix stripping
Two independent string checks per line: if the line starts with Before, slice off that prefix. If the line ends with After, slice off that suffix. Both are literal - no regex, no character-class behaviour. Empty Before or After is simply skipped.
Because the two checks are independent, a line matching only one side still gets partial stripping. `<li>Item</li>` with Before `<li>` and After `</li>` strips both. `<li>Item` (missing closing tag) strips only the Before. `Item</li>` strips only the After.
Use this for reversing Wrap, stripping HTML list-item markup, or peeling off CSV quote+comma fragments. For character-class stripping (any of a set), use trim or Remove prefixes. For regex-based pattern removal, use Replace.
How to use unwrap list items
- 1Paste your list into the input panel
- 2Set Before to the literal leading string (default `<`)
- 3Set After to the literal trailing string (default `>`)
- 4Each line is stripped independently - either side that matches is removed
- 5Mirrors the inputs to Wrap
Keyboard shortcuts
Drive ListShift without touching the mouse.
What this tool actually does
Literal-string startsWith / endsWith slicing, nothing more.
Literal match, not regex
Before `<li>` matches the literal five characters. No metacharacter behaviour. If you need regex, use Replace.
Independent sides
Before and After are checked separately. A line missing one side still has the other stripped. Means you can unwrap asymmetric data cleanly.
Empty field is skipped
Leave Before blank to only strip the After suffix (or vice versa). Effectively the same as Remove prefixes / Remove suffixes for literal strings.
Blank lines pass through
An empty line matches neither Before nor After, so it is emitted unchanged. Blank lines are never auto-removed.
Only one layer per run
A doubly-wrapped `<li><p>Item</p></li>` would need two runs with different Before/After pairs, or a single run of Replace with Regex.
Worked example
Before `<li>` and After `</li>` strip HTML list-item markup.
<li>Item 1</li> <li>Item 2</li> <li>Item 3</li>
Item 1 Item 2 Item 3
Settings reference
How each option shapes the output using the sample above.
| Setting | What it does | Effect on the sample |
|---|---|---|
| Before: `<li>`, After: `</li>` | Both sides stripped | `<li>Item 1</li>` → `Item 1` |
| Before: `<li>`, After: empty | Only leading tag stripped | `<li>Item 1</li>` → `Item 1</li>` |
| Before: empty, After: `</li>` | Only trailing tag stripped | `<li>Item 1</li>` → `<li>Item 1` |
| Before: `XX` (no match) | Line passes through unchanged | `<li>Item 1</li>` stays intact |
| Blank line (automatic) | No match on either side | Blank stays blank |