diff --git a/src/reader/cif/data-model.ts b/src/reader/cif/data-model.ts
index 4033df03aad87ed1b0606d1e5a34167b8d4f79be..a28af149d2e7bf32420594bc36823800b638cc18 100644
--- a/src/reader/cif/data-model.ts
+++ b/src/reader/cif/data-model.ts
@@ -21,6 +21,9 @@ export interface Block {
 }
 
 export function Block(categories: { readonly [name: string]: Category }, header: string): Block {
+    if (Object.keys(categories).some(k => k[0] !== '_')) {
+        throw new Error(`Category names must start with '_'.`);
+    }
     return { header, categories };
 }
 
diff --git a/src/reader/spec/cif.spec.ts b/src/reader/spec/cif.spec.ts
index 87950cf6409025abfe915dc9c6cb7e41ab96bec3..8a9cf827777ac7f635c95dc9df9a50a05d7d22b9 100644
--- a/src/reader/spec/cif.spec.ts
+++ b/src/reader/spec/cif.spec.ts
@@ -14,7 +14,7 @@ const intField = TextField({ data: columnData, indices: [0, 1, 1, 2, 2, 3], coun
 const strField = TextField({ data: columnData, indices: [3, 4, 4, 5, 5, 6], count: 3 }, 3);
 
 const testBlock = Data.Block({
-    'atoms': Data.Category(3, {
+    _atoms: Data.Category(3, {
         x: intField,
         name: strField
     })