// FM · VM · SVM, decoded
Those aren't typos.
They're Pick delimiters.
Paste or drop a raw export from UniData, UniVerse, D3, or jBase. Delint splits the item marks, field marks, value marks, and subvalue marks into a clean CSV or nested JSON. Nothing leaves your browser.
or drag a raw export file here — or just paste below
Prefilled with the standard Pick marks (bytes 255/254/253/252). Only change these if your export substitutes different characters.
What gets separated
- Item marks (IM, byte 255) — usually renders as
ÿ; each one starts a new record/row - Field marks (FM, byte 254) — usually renders as
þ; each one starts a new column - Value marks (VM, byte 253) — usually renders as
ý; multiple values inside one field - Subvalue marks (SVM, byte 252) — usually renders as
ü; nested one level deeper than values
Questions
Why does my export look like garbage — ÿ, þ, ý, ü scattered everywhere?
Those aren't corrupted characters. MultiValue databases (UniData, UniVerse, D3, jBase, mvBase — all descendants of the original Pick OS) separate data with non-printable control bytes: 255 for item marks, 254 for field marks, 253 for value marks, and 252 for subvalue marks. When a terminal, text editor, or browser decodes those bytes as Latin-1/Windows-1252 — which is common — they show up as ÿ, þ, ý, and ü. This tool detects them automatically.
Does this work for UniVerse, D3, jBase, or just UniData?
All of them. Rocket Software's entire MultiValue family (UniData, UniVerse, D3, jBase, mvBase) uses the same delimiter byte values, inherited from the original Pick operating system, so the same marks apply regardless of which flavor produced the export.
What's the difference between CSV and JSON output?
CSV flattens everything into a grid: multiple values in a field are joined with " | " and subvalues with " › ", which is easiest to open in a spreadsheet. JSON keeps the real structure — a field only becomes an array if it actually has multiple values, and a value only becomes an array if it has subvalues — which is closer to what you'd want if you're feeding the data into a script.
My marks aren't ÿ/þ/ý/ü — can I still use this?
Yes. Some export paths substitute different placeholder characters for the marks before you ever see the data. Type whatever character (or short sequence) your export actually uses into the Item/Field/Value/Subvalue fields above — the chip counts update live so you can confirm you picked the right one.
Can I point this at a dynamic (or static) file directly?
No — this tool reads flat, sequential text: the kind of output you get from COPY, LIST with a delimiter, T-DUMP, an FTP export, or a small Unibasic program that loops through a SELECT list and writes each item out. A dynamic/static file on disk is a hashed storage structure — a header plus group and overflow blocks that items are distributed into by a hash of the item-ID — not a readable top-to-bottom stream, and the exact layout is undocumented and version-specific. Export the file to sequential text first, then paste or drop the result here.
Does anything get uploaded anywhere?
No. Parsing happens entirely in your browser with JavaScript. Nothing you paste or upload is sent to a server.