A greedy outer-pair stripper
One regex per line: `/^["'`](.*)["'`]$/`. Any of the three quote characters at both ends is accepted. Content between is preserved verbatim. Only ONE pair is stripped - a doubly-quoted `""text""` becomes `"text"` after one run; to strip both layers, run twice.
Quirk: the regex does not require the opening and closing to match. So `"hello'` (mismatched) will still be unquoted to `hello`. For data written by a strict serializer this never happens, but human-edited input might have this shape.
Lines without matching outer quotes pass through unchanged. A line like `Alice"` (only trailing quote) is emitted as-is. Use trim with Chars `"'` if you need to strip stray single-sided quotes.
How to use unquote list items
- 1Paste your list into the input panel
- 2Output strips one outer pair of `"`, `'`, or `` ` `` from each line
- 3Opening and closing quotes do not need to match
- 4Only one pair per run - double-wrapped items need two runs
- 5To strip unmatched stray quotes, use trim with Chars `"'`
Keyboard shortcuts
Drive ListShift without touching the mouse.
What this tool actually does
Single-regex outer-pair strip, no options.
Three quote characters
Accepts `"` (double), `'` (single), and `` ` `` (backtick) at either end. Matches any combination.
Not a matching-pair requirement
`"Alice'` strips to `Alice`. For serializer output this is never a concern; for hand-edited data where quote shapes might be inconsistent, this is lenient by design.
Only one pair per pass
`""text""` becomes `"text"` in one run. Run twice for doubly-quoted input.
No escaping
Content between the outer quotes is emitted verbatim. Escaped sequences like `\"` stay as `\"`.
Reversible
Quote and Add quotes both round-trip with this tool as long as your input is consistent.
Worked example
Each line has its outer quote pair stripped, regardless of quote type.
"Alice" 'Bob' `Charlie`
Alice Bob Charlie
Behaviour reference
No options. The regex pattern is fixed.
| Input line shape | What happens | Example |
|---|---|---|
| `"text"` / `'text'` / `` `text` `` | Outer pair stripped | `"Alice"` → `Alice` |
| `"text'` (mismatched) | Still stripped - lenient matching | `"Alice'` → `Alice` |
| `""text""` | One pair stripped per run | First run → `"text"`; second run → `text` |
| `Alice"` (unmatched one side) | No match - passes through | `Alice"` stays `Alice"` |
| `Alice` (no quotes) | Unchanged | `Alice` stays `Alice` |