Neatbo.

MARC record-field export

Read raw ISO2709 records into complete ordered field/subfield JSON and long CSV, preserving Unicode, repeated tags, indicators and directory/value byte spans.

Browser-local processingInputUTF-8 ISO2709 MARC bytesOutputJSON / CSV / originalUp to 10 MiB per file · File limit: 1
  1. 1Add input
  2. 2Adjust settings
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

or drag and drop it here

Files stay on this device. Your originals stay unchanged.

Up to 10 MiB per file · File limit: 1

    Options

    Complete the required options first. You can keep the defaults for the rest.

    Preparing the tool…

    Before you start

    Export catalogue data without flattening repeated fields or guessing an encoding. Check structural and encoding diagnostics alongside the original file.

    How to use this tool

    1. Select one complete .mrc byte stream and choose its declared encoding profile.
    2. Inspect record/field counts, unverified overrides and record diagnostics.
    3. Download all ordered fields and original bytes; use value spans to locate data in original.mrc.

    Supported inputs and limits

    One raw file up to10MiB,10,000 records,100,000 fields and200,000 subfields. Complete original.mrc+records.json+fields.csv must fit64MiB. Decimal framing permits fields up to9,999 bytes and records up to99,999 bytes; budgets are coupled.

    Declared profile:24-byte ASCII leader,12-byte directory entries, entry map4500, two indicators and two-byte subfield identifier. Numeric/alphabetic single-case three-character tags and local ASCII subfield symbols are retained. Outer BOM, gaps, overlaps, unindexed data and malformed framing reject.

    Leader a declares UTF-8. A blank leader encoding requires the explicit known-UTF-8 override and remains unverified. Other encoding schemes and MARC8 conversion are Unsupported. Invalid UTF-8 rejects; a literal BOM inside a field is retained.

    Directory order and physical data order remain separately recorded, with all repeated fields/subfields and original values. Known ID/005/order issues are diagnostics, not a claim of full MARC21 catalogue, tag-meaning or character-repertoire validity. No MARCXML or wide-CSV flattening.

    fields.csv contains every control/subfield value. Formula-like cells get a leading apostrophe and csvLiteralPrefixAdded=1; recover original values from JSON/source or the explicit flag. The UI table displays original values.

    Preview and copy contain at most200 rows/2,000 UTF-16 units per long table cell; above20,000 units the copied report is a compact preview. Full JSON, CSV and original downloads remain complete. All output limits are combined and enforced atomically.

    Worked example

    Example input

    catalogue.mrc: 234 bytes
    Example options
    {"params":{"profile":"leader-utf8"}}

    Example output

    {"schemaVersion":1,"candidateId":"D115","model":"ISO2709 structural extraction; declared UTF8 or explicit unverified override; no catalogue conformance or MARC8 conversion","profile":"leader-utf8","inputBytes":234,"recordCount":1,"fieldCount":5,"subfieldCount":7,"csvRows":9,"csvLiteralPrefixes":0,"records":[{"recordIndex":1,"byteStart":0,"byteEnd":234,"leader":"00234nam a2200085   4500","recordLength":234,"baseAddress":85,"encodingStatus":"declared-utf8","diagnostics":[],"catalogueRulesChecked":false,"fields":[{"directoryIndex":1,"physicalIndex":1,"tag":"001","directorySpan":[24,36],"fieldSpan":[85,90],"kind":"control","indicators":null,"value":"R001","valueSpan":[85,89],"subfields":[]},{"directoryIndex":2,"physicalIndex":2,"tag":"008","directorySpan":[36,48],"fieldSpan":[90,131],"kind":"control","indicators":null,"value":"240101s2024    xx                  eng  ","valueSpan":[90,130],"subfields":[]},{"directoryIndex":3,"physicalIndex":3,"tag":"245","directorySpan":[48,60],"fieldSpan":[131,188],"kind":"data","indicators":["1","0"],"value":null,"valueSpan":null,"subfields":[{"subfieldIndex":1,"code":"a","codeSpan":[133,135],"valueSpan":[135,166],"value":"České čtení — 中文 🧪"},{"subfieldIndex":2,"code":"b","codeSpan":[166,168],"valueSpan":[168,177],"value":"podnázev"},{"subfieldIndex":3,"code":"a","codeSpan":[177,179],"valueSpan":[179,187],"value":"repeated"}]},{"directoryIndex":4,"physicalIndex":4,"tag":"650","directorySpan":[60,72],"fieldSpan":[188,215],"kind":"data","indicators":[" "," "],"value":null,"valueSpan":null,"subfields":[{"subfieldIndex":1,"code":"a","codeSpan":[190,192],"valueSpan":[192,199],"value":"A topic"},{"subfieldIndex":2,"code":"x","codeSpan":[199,201],"valueSpan":[201,207],"value":"Detail"},{"subfieldIndex":3,"code":"9","codeSpan":[207,209],"valueSpan":[209,214],"value":"local"}]},{"directoryIndex":5,"physicalIndex":5,"tag":"650","directorySpan":[72,84],"fieldSpan":[215,233],"kind":"data","indicators":[" "," "],"value":null,"valueSpan":null,"subfields":[{"subfieldIndex":1,"code":"a","codeSpan":[217,219],"valueSpan":[219,232],"value":"Another topic"}]}]}]}
    

    When something does not work

    Check the selected profile and the original source, then correct the input or reduce complete input/output size. Cancellation and errors publish no partial files; rerun the same supported source.

    Frequently asked questions

    Can it fix a MARC8 file?

    No. MARC8 conversion is Unsupported. Only known UTF-8 bytes can use the explicit blank-leader override.

    Is every parsed record valid catalogue data?

    No. Framing and the declared encoding profile are checked; complete catalogue meanings, repeatability and character repertoire remain unreviewed.

    Documentation & further reading

    Related tools