diff --git a/rs_bindings_from_cc/collect_instantiations.rs b/rs_bindings_from_cc/collect_instantiations.rs
index ff8a721..8e3d685 100644
--- a/rs_bindings_from_cc/collect_instantiations.rs
+++ b/rs_bindings_from_cc/collect_instantiations.rs
@@ -81,8 +81,7 @@
                 // TODO(lukasza, hlopko): More explicitly ensure that the same canonicalization
                 // (e.g. TokenStream->String transformation) is used here and in
                 // `cc_template/cc_template_impl.rs`.
-                let instantiation_name = m.tokens.to_string();
-
+                let instantiation_name = m.tokens.to_string().replace(' ', "");
                 results.insert(instantiation_name);
             }
         }
@@ -138,7 +137,7 @@
         let result =
             write_file_and_collect_instantiations(quote! { cc_template!(MyTemplate<int>) })
                 .unwrap();
-        assert_eq!(result, vec!["MyTemplate < int >".to_string()]);
+        assert_eq!(result, vec!["MyTemplate<int>".to_string()]);
     }
 
     #[test]
@@ -146,7 +145,7 @@
         let result =
             write_file_and_collect_instantiations(quote! { cc_template![MyTemplate<int>] })
                 .unwrap();
-        assert_eq!(result, vec!["MyTemplate < int >".to_string()]);
+        assert_eq!(result, vec!["MyTemplate<int>".to_string()]);
     }
 
     #[test]
@@ -154,7 +153,7 @@
         let result =
             write_file_and_collect_instantiations(quote! { cc_template!{MyTemplate<int>} })
                 .unwrap();
-        assert_eq!(result, vec!["MyTemplate < int >".to_string()]);
+        assert_eq!(result, vec!["MyTemplate<int>".to_string()]);
     }
 
     #[test]
@@ -168,9 +167,9 @@
         assert_eq!(
             result,
             vec![
-                "MyTemplate < int >".to_string(),
-                "MyTemplate < long >".to_string(),
-                "MyTemplate < short >".to_string(),
+                "MyTemplate<int>".to_string(),
+                "MyTemplate<long>".to_string(),
+                "MyTemplate<short>".to_string(),
             ]
         );
     }
@@ -187,9 +186,9 @@
         assert_eq!(
             result,
             vec![
-                "MyTemplate < 42 >".to_string(),
-                "std :: unique_ptr < absl :: Time >".to_string(),
-                "std :: vector < Foo >".to_string(),
+                "MyTemplate<42>".to_string(),
+                "std::unique_ptr<absl::Time>".to_string(),
+                "std::vector<Foo>".to_string(),
             ]
         );
     }
@@ -203,7 +202,7 @@
             }
         })
         .unwrap();
-        assert_eq!(result, vec!["std :: vector < Foo >".to_string(),]);
+        assert_eq!(result, vec!["std::vector<Foo>".to_string(),]);
     }
 
     fn collect_instantiations_from_json(json: &str) -> String {
@@ -221,7 +220,7 @@
         );
         assert_eq!(
             collect_instantiations_from_json(&format!("[\"{}\"]", filename.display())),
-            "[\"std :: vector < bool >\",\"std :: vector < int >\"]"
+            "[\"std::vector<bool>\",\"std::vector<int>\"]"
         );
     }
 }
diff --git a/rs_bindings_from_cc/collect_instantiations_test.cc b/rs_bindings_from_cc/collect_instantiations_test.cc
index f1a2262..b869362 100644
--- a/rs_bindings_from_cc/collect_instantiations_test.cc
+++ b/rs_bindings_from_cc/collect_instantiations_test.cc
@@ -29,7 +29,7 @@
   std::string path =
       WriteFileForCurrentTest("a.rs", "cc_template!(std::vector<bool>);");
   EXPECT_THAT(CollectInstantiations({std::move(path)}),
-              IsOkAndHolds(ElementsAre(StrEq("std :: vector < bool >"))));
+              IsOkAndHolds(ElementsAre(StrEq("std::vector<bool>"))));
 }
 
 }  // namespace
diff --git a/support/cc_template/cc_template_impl.rs b/support/cc_template/cc_template_impl.rs
index b3bf72c..80cf897 100644
--- a/support/cc_template/cc_template_impl.rs
+++ b/support/cc_template/cc_template_impl.rs
@@ -51,7 +51,7 @@
     // TODO(lukasza, hlopko): More explicitly ensure that the same canonicalization
     // (e.g. TokenStream->String transformation) is used here and in
     // `rs_bindings_from_cc/collect_instantiations.rs`.
-    let instantiation_name = input.to_string();
+    let instantiation_name = input.to_string().replace(' ', "");
 
     match instantiations.get(&instantiation_name) {
         Some(concrete_struct_name) => {
@@ -139,9 +139,9 @@
     #[test]
     fn test_successful_expansion() {
         let expanded = get_instantiation_struct_name(
-            quote!{ std::vector<bool> },
+            quote! { std::vector<bool> },
             hashmap! {
-                quote!{ std::vector<bool> }.to_string() => "__std_vector__bool__".to_string(),
+                quote!{ std::vector<bool> }.to_string().replace(' ', "") => "__std_vector__bool__".to_string(),
             },
         )
         .unwrap();
diff --git a/support/cc_template/test/__cc_template_instantiations.json b/support/cc_template/test/__cc_template_instantiations.json
index 0e8435c..34ea80b 100644
--- a/support/cc_template/test/__cc_template_instantiations.json
+++ b/support/cc_template/test/__cc_template_instantiations.json
@@ -1,3 +1,3 @@
 {
-  "my_namespace :: MyTemplate < MyArg >": "__CcTemplateInst_my_namespace_my_template_my_arg"
+  "my_namespace::MyTemplate<MyArg>": "__CcTemplateInst_my_namespace_my_template_my_arg"
 }
