diff --git a/Changes b/Changes
index 9a8ad95..d122f20 100644
--- a/Changes
+++ b/Changes
@@ -6,6 +6,9 @@
         - Minor cleanups and improvements
         - Introduce --skip-inline-tags parameter
         - Introduce KorAP::XML::TEI::Inline class
+        - Introduce --skip-inline-token-annotations parameter
+        - Deprecate KORAPXMLTEI_INLINE environment variable
+          in favor of --skip-inline-token-annotations
 
 1.00 2021-02-18 Release
         - -s option added that uses sentence boundaries
diff --git a/Readme.pod b/Readme.pod
index 5bf127f..f9814a2 100644
--- a/Readme.pod
+++ b/Readme.pod
@@ -117,6 +117,12 @@
 Boolean flag indicating that inline tokens should not
 be processed. Defaults to false (meaning inline tokens will be processed).
 
+=item B<--skip-inline-token-annotations>
+
+Boolean flag indicating that inline token annotations should not
+be processed. Defaults to true (meaning inline token annotations
+won't be processed).
+
 =item B<--skip-inline-tags> <tags>
 
 Expects a comma-separated list of tags to be ignored when the structure
@@ -182,11 +188,6 @@
 Activate minimal debugging.
 Defaults to C<false>.
 
-=item B<KORAPXMLTEI_INLINE>
-
-Process inline annotations, if present.
-Defaults to C<false>.
-
 =back
 
 =head1 COPYRIGHT AND LICENSE
@@ -206,4 +207,4 @@
 This program is free software published under the
 L<BSD-2 License|https://opensource.org/licenses/BSD-2-Clause>.
 
-=cut
\ No newline at end of file
+=cut
diff --git a/script/tei2korapxml b/script/tei2korapxml
index 5740407..e0b07ea 100755
--- a/script/tei2korapxml
+++ b/script/tei2korapxml
@@ -38,6 +38,10 @@
   DEBUG => $ENV{KORAPXMLTEI_DEBUG} // 0
 };
 
+if ($ENV{KORAPXMLTEI_INLINE}) {
+  warn 'KORAPXMLTEI_INLINE is deprecated in favor of --skip-inline-token-annotations';
+};
+
 # Parse options from the command line
 GetOptions(
   'root|r=s'              => \(my $root_dir    = '.'),
@@ -49,6 +53,8 @@
   'inline-tokens=s'       => \(my $inline_tokens = 'tokens#morpho'),
   'inline-structures=s'   => \(my $inline_structures = 'struct#structure'),
   'skip-inline-tokens'    => \(my $skip_inline_tokens = 0),
+  'skip-inline-token-annotations' => \(
+    my $skip_inline_token_annotations = ($ENV{KORAPXMLTEI_INLINE} ? 0 : 1)),
   'skip-inline-tags=s'    => \(my $skip_inline_tags_str = ''),
   'base-foundry=s'        => \(my $base_dir    = 'base'),
   'data-file=s'           => \(my $data_file   = 'data'),
@@ -130,9 +136,6 @@
 # i.e. tokens of the $_TOKENS_TAG, if $_TOKENS_PROC is set
 my ($_tokens_dir, $_tokens_file) = split '#', $inline_tokens . '#morpho';
 
-# Handling inline annotations (inside $_TOKENS_TAG)
-my $_INLINE_ANNOT = $ENV{KORAPXMLTEI_INLINE} ? 1 : 0;
-
 # Initialize zipper
 my $zipper = KorAP::XML::TEI::Zipper->new($root_dir);
 
@@ -282,7 +285,8 @@
           $inline->tokens->to_zip(
             $zipper->new_stream("$dir/$_tokens_dir/${_tokens_file}.xml"),
             $text_id_esc,
-            $_INLINE_ANNOT # Either 0 = tokens without inline or 1 = tokens with inline
+            # Either 0 = tokens without inline or 1 = tokens with inline
+            !$skip_inline_token_annotations
           );
         };
 
@@ -504,6 +508,12 @@
 Boolean flag indicating that inline tokens should not
 be processed. Defaults to false (meaning inline tokens will be processed).
 
+=item B<--skip-inline-token-annotations>
+
+Boolean flag indicating that inline token annotations should not
+be processed. Defaults to true (meaning inline token annotations
+won't be processed).
+
 =item B<--skip-inline-tags> <tags>
 
 Expects a comma-separated list of tags to be ignored when the structure
@@ -569,11 +579,6 @@
 Activate minimal debugging.
 Defaults to C<false>.
 
-=item B<KORAPXMLTEI_INLINE>
-
-Process inline annotations, if present.
-Defaults to C<false>.
-
 =back
 
 =head1 COPYRIGHT AND LICENSE
diff --git a/t/script.t b/t/script.t
index 6f1d2d1..614ba1d 100644
--- a/t/script.t
+++ b/t/script.t
@@ -506,6 +506,7 @@
     tmp => 'script_tagged'
   )
     ->stderr_like(qr!tei2korapxml:.*? text_id=GOE_AGA\.00000!)
+    ->stderr_like(qr!KORAPXMLTEI_INLINE is deprecated!)
 
     # Check zip using xml loy
     ->unzip_xml('GOE/AGA/00000/tokens/morpho.xml')
@@ -584,11 +585,11 @@
 
   my $t = test_tei2korapxml(
     file => $file,
-    env => 'KORAPXMLTEI_INLINE=1',
     tmp => 'script_tagged',
-    param => '--inline-tokens=myfoundry#myfile'
+    param => '--inline-tokens=myfoundry#myfile --skip-inline-token-annotations=0'
   )
     ->stderr_like(qr!tei2korapxml:.*? text_id=GOE_AGA\.00000!)
+    ->stderr_unlike(qr!KORAPXMLTEI_INLINE is deprecated!)
 
     ->file_exists_not('GOE/AGA/00000/tokens/morpho.xml', 'Morpho not generated')
 
@@ -604,9 +605,8 @@
 
   $t = test_tei2korapxml(
     file => $file,
-    env => 'KORAPXMLTEI_INLINE=1',
     tmp => 'script_tagged',
-    param => '--inline-tokens=myfoundry'
+    param => '--inline-tokens=myfoundry --skip-inline-token-annotations=0'
   )
     ->stderr_like(qr!tei2korapxml:.*? text_id=GOE_AGA\.00000!)
 
@@ -632,14 +632,14 @@
 
   # Generate zip file (unportable!)
   stderr_like(
-    sub { `cat '$file' | KORAPXMLTEI_INLINE=1 perl '$script' > '$outzip'` },
+    sub { `cat '$file' | perl '$script' --skip-token-inline-annotations=0 > '$outzip'` },
     qr!tei2korapxml:.*? text_id=GOE_AGA\.00000!,
     'Processing 1'
   );
 
   # TODO: there should be a better way to test this
   stderr_unlike(
-    sub { `cat '$file' | KORAPXMLTEI_INLINE=1 perl '$script' > '$outzip'` },
+    sub { `cat '$file' | perl '$script' --skip-token-inline-annotations=0 > '$outzip'` },
     qr!.*undefined value.*!,
     'Processing 2'
   );
@@ -666,8 +666,8 @@
   # Load example file
   test_tei2korapxml(
     file => catfile($f, 'data', 'goe_sample.i5.xml'),
-    env => 'KORAPXMLTEI_INLINE=1',
-    tmp => 'script_utf8_enc'
+    tmp => 'script_utf8_enc',
+    param => '--skip-inline-token-annotations=0',
   )
     ->stderr_like(qr!tei2korapxml:.*? text_id=GOE_AGA\.00000!)
     ->unzip_xml('GOE/AGA/00000/data.xml')
@@ -677,7 +677,7 @@
 
   test_tei2korapxml(
     file => catfile($f, 'data', 'goe_sample.i5.iso.xml'),
-    env => 'KORAPXMLTEI_INLINE=1',
+    param => '--skip-inline-token-annotations=0',
     tmp => 'script_iso_enc'
   )
     ->stderr_like(qr!tei2korapxml:.*? text_id=GOE_AGA\.00000!)
