diff --git a/extra/ctags/ctags-docs.factor b/extra/ctags/ctags-docs.factor
index f2dbd8bc2b..2da85bd43d 100644
--- a/extra/ctags/ctags-docs.factor
+++ b/extra/ctags/ctags-docs.factor
@@ -32,6 +32,18 @@ HELP: ctags-write ( seq path -- )
 { $notes
   { $snippet "tags" } " file will contain a single line: if\\t/path/to/factor/extra/unix/unix.factor\\t91" } ;
 
+HELP: ctag-strings ( alist -- seq )
+{ $values { "alist" alist }
+          { "seq" sequence } }
+{ $description "Converts an " { $snippet "alist" } " with ctag format (a word as key and a sequence whose first element is a resource name and a second element is a line number as value) in a " { $snippet "seq" } " of ctag strings." }
+{ $examples
+  { $example
+    "USING: kernel ctags ;"
+    "{ { if  { \"resource:extra/unix/unix.factor\" 91 } } } ctag-strings"
+    "{ \"if\\t/path/to/factor/extra/unix/unix.factor\\t91\" }"
+  }
+} ;
+
 HELP: ctag ( seq -- str )
 { $values { "seq" sequence }
           { "str" string } }
diff --git a/extra/ctags/ctags-tests.factor b/extra/ctags/ctags-tests.factor
index dc6e402653..6c73b58ecb 100644
--- a/extra/ctags/ctags-tests.factor
+++ b/extra/ctags/ctags-tests.factor
@@ -1,7 +1,12 @@
-USING: kernel ctags tools.test io.backend sequences ;
-IN: columns.tests
+USING: kernel ctags tools.test io.backend sequences arrays prettyprint ;
+IN: ctags.tests
 
 [ t ] [
   "if\t" "resource:extra/unix/unix.factor" normalize-path "\t91" 3append
   { if  { "resource:extra/unix/unix.factor" 91 } } ctag =
+] unit-test
+
+[ t ] [
+  "if\t" "resource:extra/unix/unix.factor" normalize-path "\t91" 3append 1array
+  { { if  { "resource:extra/unix/unix.factor" 91 } } } ctag-strings =
 ] unit-test
\ No newline at end of file
diff --git a/extra/ctags/ctags.factor b/extra/ctags/ctags.factor
index 5b9ff90e5c..c8bf2272fb 100644
--- a/extra/ctags/ctags.factor
+++ b/extra/ctags/ctags.factor
@@ -18,8 +18,11 @@ IN: ctags
     second number>string %
   ] "" make ;
 
+: ctag-strings ( seq1 -- seq2 )
+  { } swap [ ctag suffix ] each ;
+
 : ctags-write ( seq path -- )
-  ascii [ [ ctag print ] each ] with-file-writer ;
+  >r ctag-strings r> ascii set-file-lines ;
 
 : (ctags) ( -- seq )
   { } all-words [