Koha stores bibliographic data as MARC records and extracts a subset of those fields into ordinary database columns for search and circulation. Understanding which fields Koha actually reads is what separates a catalog that works from one that looks right and behaves oddly.
How Koha stores MARC records
Each record exists twice: as a complete MARC blob, and as extracted values in relational columns. The cataloging module keeps both in step.
The practical consequence is that editing data outside the cataloging module — a direct database change, or a batch job that touches only one representation — leaves the two disagreeing. The record then displays one thing and searches as another, which is a genuinely confusing bug to chase.
MARC21 vs UNIMARC
Chosen at installation and not changeable afterwards. MARC21 is used across North America, the UK, Australia and most of Asia; UNIMARC persists in parts of Europe. If you are choosing, MARC21 gives you a far larger pool of records to copy-catalog from.
The essential MARC21 fields in Koha
| Tag | Name | What Koha does with it |
|---|---|---|
| 000 | Leader | Record type and bibliographic level; drives icons and some behaviour |
| 001 | Control number | Used for matching on import — duplicates cause overlay problems |
| 003 | Control number identifier | Qualifies 001; matters when merging sources |
| 005 | Transaction time | Updated automatically |
| 008 | Fixed-length data | Language, date, place, audience — feeds search limits |
| 020 | ISBN | Search, matching, cover images |
| 022 | ISSN | Serials identification |
| 040 | Cataloging source | Provenance |
| 041 | Language code | Language facet |
| 100 / 110 / 111 | Main entry | Author browse; links to authorities |
| 130 / 240 | Uniform title | Collocates editions |
| 245 | Title statement | The displayed title. Indicators matter — see below |
| 250 | Edition | Display |
| 264 / 260 | Publication | Publisher, place, date |
| 300 | Physical description | Extent, dimensions |
| 490 / 830 | Series | Series browse |
| 500 / 520 | Notes / summary | Display; 520 feeds keyword search |
| 600 / 650 / 651 | Subjects | Subject browse and facets |
| 700 / 710 | Added entries | Additional authors |
| 856 | Electronic location | Links to online resources |
| 942 | Koha-specific | Item type and classification scheme |
| 952 | Koha holdings | One field per physical copy |
The 942 field — Koha's own
Not part of standard MARC21; Koha uses the locally-defined 942 for record-level defaults.
942$c is the default item type, and it is the one that causes problems. Records imported from external sources frequently arrive without it. Koha may then be unable to determine circulation behaviour, and the record can behave unpredictably in searches and limits. If you import records in bulk, check 942$c is populated — it is the single most common post-import fix.
The 952 field — holdings
The field that confuses everyone new to Koha. One 952 field equals one physical copy. Three copies of a title means one bibliographic record with three 952 fields.
| Subfield | Meaning |
|---|---|
| $a | Home branch — where the item belongs |
| $b | Holding branch — where it currently is |
| $c | Shelving location |
| $o | Full call number |
| $p | Barcode — must be unique across the whole system |
| $y | Item type — drives circulation rules |
| $7 | Not for loan status |
| $8 | Collection code |
| $d | Date acquired |
| $v | Replacement price — used for lost-item charges |
A record with no 952 has no copies and will not show as available in the OPAC. After a bulk import, records with no holdings are the most common "where did my books go" report.
MARC frameworks
A framework defines which tags and subfields appear when cataloging, which are mandatory, which are hidden, and which link to authorised value lists. Koha ships a default plus several specialised frameworks.
Create a new framework rather than editing the default in place. The default is the fallback for everything, and changes to it surface in unexpected places later. Copy it, then modify the copy.
Authorities
Linking 1xx, 6xx and 7xx fields to authority records is what makes browse work properly and keeps headings consistent. It is optional and it is worth doing — an unlinked catalog accumulates four spellings of the same author and no way to notice.
Importing MARC records
Three routes:
- Z39.50 / SRU copy cataloging — search a remote catalog and import a matching record. How most libraries catalog most stock.
- Batch import — a MARC file staged, matched against existing records, then committed. Always review the staged batch before committing.
- Manual — for genuinely unique local material.
Copy cataloging has real friction that is rarely mentioned: finding targets that are actually up, adding each one by hand, and diagnosing attribute or syntax mismatches — which make a target return nothing at all rather than an error, so it looks like your search was simply unsuccessful. Having a set of Z39.50 and SRU sources already configured and enabled with one click is the same job minus the afternoon.
Beyond copy cataloging, a record can now be drafted from a title and an ISBN with AI-assisted cataloging on a system we host for you — useful for material no remote catalog holds.
Common MARC problems and fixes
- Mojibake — question marks or boxes instead of accented characters. MARC-8 data loaded as UTF-8. Fix at the source and reload; converting after the fact is lossy. See our migration guide.
- Missing 942$c — batch-add the correct item type.
- Missing 952 — record invisible as available. Add holdings.
- Duplicate 001s — breaks import matching and causes wrong overlays.
- Titles sorting under "The" — the 245 second indicator sets how many leading characters to skip. "The Great Gatsby" needs indicator 4.
- Duplicate barcodes in 952$p — rejected on import; deduplicate before loading.
Bulk editing MARC records
Koha's batch record modification applies a template to many records at once. It is the right tool for adding a missing 942$c across an imported batch.
Back up before every batch operation. There is no undo, and a template with a wrong condition can modify thousands of records in seconds. See our backup guide.
Struggling with imported records? We fix encoding problems, missing item types and holdings across whole catalogs. Send us a sample file and we will tell you what is wrong with it.

