diff --git a/Changes b/Changes
index aa7fc08..4f6fe20 100644
--- a/Changes
+++ b/Changes
@@ -9,6 +9,8 @@
               (implemented with AI assistance)
             - Add --base-tokens option to generate base/tokens.xml
               (implemented with AI assistance)
+            - Filter SpaceAfter/SpacesAfter from MISC column
+              (implemented with AI assistance)
 
 0.6.3 2024-06-04
         - Trim filenames to fix double space after filename metadata
diff --git a/script/conllu2korapxml b/script/conllu2korapxml
index 32cfbcf..58f443c 100755
--- a/script/conllu2korapxml
+++ b/script/conllu2korapxml
@@ -301,6 +301,11 @@
       }
       $morpho .= qq(      <f name="lemma">$parsed[2]</f>\n) if($parsed[2] ne "_" || $parsed[1] eq '_');
       $morpho .= qq(      <f name="msd">$parsed[5]</f>\n) if($parsed[5] ne "_");
+      # Filter SpaceAfter from MISC column
+      if ($parsed[9] ne "_") {
+        my @misc_parts = grep { !/^Spaces?After/ } split(/\|/, $parsed[9]);
+        $parsed[9] = @misc_parts ? join('|', @misc_parts) : '_';
+      }
       if($parsed[9] ne "_") {
         if ($parsed[9] =~ /[0-9.e]+/) {
           $morpho .= qq(      <f name="certainty">$parsed[9]</f>\n)
diff --git a/t/ud_conllu.t b/t/ud_conllu.t
index aba57a8..43bc67f 100644
--- a/t/ud_conllu.t
+++ b/t/ud_conllu.t
@@ -26,6 +26,23 @@
 
 CONLLU
 
+my $misc_data = <<'CONLLU';
+# filename = TEST/TEST/TEST_MISC_001/base/tokens.xml
+# text_id = TEST_TEST.TEST_MISC_001
+# start_offsets = 0 0 6 11
+# end_offsets = 12 5 11 12
+1	Geras	geras	ADJ	bdv.	Case=Nom	2	amod	_	SpaceAfter=No|Tag=NNN
+2	rytas	rytas	NOUN	dkt.	Case=Nom	0	root	_	Tag=LLL
+3	.	.	PUNCT	skyr.	_	2	punct	_	SpaceAfter=No
+
+# start_offsets = 12 13 18 24
+# end_offsets = 25 17 24 25
+1	Kaip	kaip	ADV	prv.	_	2	advmod	_	SpacesAfter=\n|Tag=MMM
+2	sekasi	sektis	VERB	vksm.	_	0	root	_	_
+3	?	?	PUNCT	skyr.	_	2	punct	_	_
+
+CONLLU
+
 my $test_tempdir = tempdir();
 my $offset_file = "$test_tempdir/test_offset.conllu";
 {
@@ -809,4 +826,76 @@
     fail("Zip does NOT contain base/tokens.xml when --base-tokens omitted");
 }
 
+my $misc_file = "$test_tempdir/test_misc.conllu";
+{
+    open(my $mfh, '>:encoding(UTF-8)', $misc_file)
+        or die "Cannot write test file: $!";
+    print $mfh $misc_data;
+    close($mfh);
+}
+
+my $zipcontent_misc = '';
+script_runs(
+    [ 'script/conllu2korapxml', '-f', 'ud', $misc_file ],
+    { stdout => \$zipcontent_misc },
+    "conllu2korapxml runs with MISC column data"
+);
+
+my $zipfile_misc = "$test_tempdir/test_misc.zip";
+if ($zipcontent_misc) {
+    open(my $zfh, '>:raw', $zipfile_misc) or die "Cannot write zip: $!";
+    print $zfh $zipcontent_misc;
+    close($zfh);
+
+    my $morpho_xml = `$UNZIP -p $zipfile_misc 'TEST/TEST/TEST_MISC_001/ud/morpho.xml' 2>/dev/null`;
+
+    # SpaceAfter=No|Tag=NNN -> only Tag=NNN kept
+    like($morpho_xml,
+        qr/<f name="misc">Tag=NNN<\/f>/,
+        "MISC: SpaceAfter=No filtered, Tag=NNN kept");
+
+    unlike($morpho_xml,
+        qr/<f name="misc">SpaceAfter=No\|Tag=NNN<\/f>/,
+        "MISC: raw SpaceAfter=No|Tag not stored verbatim");
+
+    # Pure Tag=LLL (no SpaceAfter) -> preserved unchanged
+    like($morpho_xml,
+        qr/<f name="misc">Tag=LLL<\/f>/,
+        "MISC: pure non-SpaceAfter value preserved unchanged");
+
+    # SpaceAfter=No alone -> no misc element at all
+    my ($s1_n3_block) = $morpho_xml =~ /(id="s1_n3".*?<\/span>)/s;
+    ok(defined $s1_n3_block, "Found span block for s1_n3");
+    unlike($s1_n3_block // '',
+        qr/<f name="misc">/,
+        "MISC: SpaceAfter=No alone produces no misc element");
+    unlike($s1_n3_block // '',
+        qr/<f name="certainty">/,
+        "MISC: SpaceAfter=No alone produces no certainty element");
+
+    # SpacesAfter=\n|Tag=MMM -> only Tag=MMM kept
+    like($morpho_xml,
+        qr/<f name="misc">Tag=MMM<\/f>/,
+        "MISC: SpacesAfter filtered, Tag=MMM kept");
+
+    unlike($morpho_xml,
+        qr/SpacesAfter/,
+        "MISC: no SpacesAfter value appears in output");
+
+    unlike($morpho_xml,
+        qr/SpaceAfter/,
+        "MISC: no SpaceAfter value appears in output at all");
+}
+else {
+    fail("MISC: SpaceAfter=No filtered, Tag=NNN kept");
+    fail("MISC: raw SpaceAfter=No|Tag not stored verbatim");
+    fail("MISC: pure non-SpaceAfter value preserved unchanged");
+    fail("Found span block for s1_n3");
+    fail("MISC: SpaceAfter=No alone produces no misc element");
+    fail("MISC: SpaceAfter=No alone produces no certainty element");
+    fail("MISC: SpacesAfter filtered, Tag=MMM kept");
+    fail("MISC: no SpacesAfter value appears in output");
+    fail("MISC: no SpaceAfter value appears in output at all");
+}
+
 done_testing;
