diff --git a/dawn.json b/dawn.json
index fccab43..b849ff8 100644
--- a/dawn.json
+++ b/dawn.json
@@ -27,6 +27,7 @@
     },
     "adapter type": {
         "category": "enum",
+        "javascript": false,
         "values": [
             {"value": 0, "name": "discrete GPU"},
             {"value": 1, "name": "integrated GPU"},
@@ -44,6 +45,7 @@
     },
     "backend type": {
         "category": "enum",
+        "javascript": false,
         "values": [
             {"value": 0, "name": "null"},
             {"value": 1, "name": "D3D11"},
@@ -1314,6 +1316,7 @@
     "surface descriptor from metal layer": {
         "category": "structure",
         "chained": true,
+        "javascript": false,
         "members": [
             {"name": "layer", "type": "void", "annotation": "*"}
         ]
@@ -1321,6 +1324,7 @@
     "surface descriptor from windows HWND": {
         "category": "structure",
         "chained": true,
+        "javascript": false,
         "members": [
             {"name": "hinstance", "type": "void", "annotation": "*"},
             {"name": "hwnd", "type": "void", "annotation": "*"}
@@ -1329,6 +1333,7 @@
     "surface descriptor from xlib": {
         "category": "structure",
         "chained": true,
+        "javascript": false,
         "members": [
             {"name": "display", "type": "void", "annotation": "*"},
             {"name": "window", "type": "uint32_t"}
@@ -1365,6 +1370,7 @@
     },
     "s type": {
         "category": "enum",
+        "javascript": false,
         "values": [
             {"value": 0, "name": "invalid"},
             {"value": 1, "name": "surface descriptor from metal layer"},
@@ -1439,7 +1445,7 @@
     "texture format": {
         "category": "enum",
         "values": [
-            {"value": 0, "name": "undefined", "valid": false},
+            {"value": 0, "name": "undefined", "valid": false, "jsrepr": "undefined"},
             {"value": 1, "name": "R8 unorm"},
             {"value": 2, "name": "R8 snorm"},
             {"value": 3, "name": "R8 uint"},
@@ -1535,7 +1541,7 @@
     "texture view dimension": {
         "category": "enum",
         "values": [
-            {"value": 0, "name": "undefined", "valid": false},
+            {"value": 0, "name": "undefined", "valid": false, "jsrepr": "undefined"},
             {"value": 1, "name": "1D"},
             {"value": 2, "name": "2D"},
             {"value": 3, "name": "2D array"},
diff --git a/generator/dawn_json_generator.py b/generator/dawn_json_generator.py
index 83cdd2f..6ff4280 100644
--- a/generator/dawn_json_generator.py
+++ b/generator/dawn_json_generator.py
@@ -51,6 +51,14 @@
     def snake_case(self):
         return '_'.join(self.chunks)
 
+    def js_enum_case(self):
+        result = self.chunks[0].lower()
+        for chunk in self.chunks[1:]:
+            if not result[-1].isdigit():
+                result += '-'
+            result += chunk.lower()
+        return result
+
 def concat_names(*names):
     return ' '.join([name.canonical_case() for name in names])
 
@@ -60,12 +68,26 @@
         self.dict_name = name
         self.name = Name(name, native=native)
         self.category = json_data['category']
+        self.javascript = self.json_data.get('javascript', True)
 
-EnumValue = namedtuple('EnumValue', ['name', 'value', 'valid'])
+EnumValue = namedtuple('EnumValue', ['name', 'value', 'valid', 'jsrepr'])
 class EnumType(Type):
     def __init__(self, name, json_data):
         Type.__init__(self, name, json_data)
-        self.values = [EnumValue(Name(m['name']), m['value'], m.get('valid', True)) for m in self.json_data['values']]
+
+        self.values = []
+        self.contiguousFromZero = True
+        lastValue = -1
+        for m in self.json_data['values']:
+            value = m['value']
+            if value != lastValue + 1:
+                self.contiguousFromZero = False
+            lastValue = value
+            self.values.append(EnumValue(
+                Name(m['name']),
+                value,
+                m.get('valid', True),
+                m.get('jsrepr', None)))
 
         # Assert that all values are unique in enums
         all_values = set()
@@ -377,6 +399,10 @@
     else:
         return name.CamelCase()
 
+def as_jsEnumValue(value):
+    if value.jsrepr: return value.jsrepr
+    return "'" + value.name.js_enum_case() + "'"
+
 def convert_cType_to_cppType(typ, annotation, arg, indent=0):
     if typ.category == 'native':
         return arg
@@ -522,6 +548,7 @@
             'as_cType': as_cType,
             'as_cTypeDawn': as_cTypeDawn,
             'as_cppType': as_cppType,
+            'as_jsEnumValue': as_jsEnumValue,
             'convert_cType_to_cppType': convert_cType_to_cppType,
             'as_varName': as_varName,
             'decorate': decorate,
@@ -544,6 +571,10 @@
         if 'dawncpp' in targets:
             renders.append(FileRender('webgpu_cpp.cpp', 'src/dawn/webgpu_cpp.cpp', [base_params, api_params]))
 
+        if 'emscripten_bits' in targets:
+            renders.append(FileRender('webgpu_struct_info.json', 'src/dawn/webgpu_struct_info.json', [base_params, api_params]))
+            renders.append(FileRender('library_webgpu_enum_tables.js', 'src/dawn/library_webgpu_enum_tables.js', [base_params, api_params]))
+
         if 'mock_webgpu' in targets:
             mock_params = [
                 base_params,
diff --git a/generator/templates/library_webgpu_enum_tables.js b/generator/templates/library_webgpu_enum_tables.js
new file mode 100644
index 0000000..44048ad
--- /dev/null
+++ b/generator/templates/library_webgpu_enum_tables.js
@@ -0,0 +1,35 @@
+//* Copyright 2020 The Dawn Authors
+//*
+//* Licensed under the Apache License, Version 2.0 (the "License");
+//* you may not use this file except in compliance with the License.
+//* You may obtain a copy of the License at
+//*
+//*     http://www.apache.org/licenses/LICENSE-2.0
+//*
+//* Unless required by applicable law or agreed to in writing, software
+//* distributed under the License is distributed on an "AS IS" BASIS,
+//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//* See the License for the specific language governing permissions and
+//* limitations under the License.
+//*
+//*
+//* This generator is used to produce the number-to-string mappings for
+//* Emscripten's library_webgpu.js.
+//* https://github.com/emscripten-core/emscripten/blob/master/src/library_webgpu.js
+//*
+    {% for type in by_category["enum"] if type.javascript %}
+        {{type.name.CamelCase()}}: {% if type.contiguousFromZero -%}
+            [
+                {% for value in type.values %}
+                  {{as_jsEnumValue(value)}},
+                {% endfor %}
+            ]
+        {%- else -%}
+            {
+                {% for value in type.values %}
+                  {{value.value}}: {{as_jsEnumValue(value)}},
+                {% endfor %}
+            }
+        {%- endif -%}
+        ,
+    {% endfor %}
diff --git a/generator/templates/webgpu_struct_info.json b/generator/templates/webgpu_struct_info.json
new file mode 100644
index 0000000..5120ba8
--- /dev/null
+++ b/generator/templates/webgpu_struct_info.json
@@ -0,0 +1,51 @@
+//* Copyright 2020 The Dawn Authors
+//*
+//* Licensed under the Apache License, Version 2.0 (the "License");
+//* you may not use this file except in compliance with the License.
+//* You may obtain a copy of the License at
+//*
+//*     http://www.apache.org/licenses/LICENSE-2.0
+//*
+//* Unless required by applicable law or agreed to in writing, software
+//* distributed under the License is distributed on an "AS IS" BASIS,
+//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//* See the License for the specific language governing permissions and
+//* limitations under the License.
+//*
+//*
+//* This generator is used to produce part of Emscripten's struct_info.json,
+//* which is a list of struct fields that it uses to generate field offset
+//* information for its own code generators.
+//* https://github.com/emscripten-core/emscripten/blob/master/src/struct_info.json
+//*
+    {
+        "file": "webgpu/webgpu.h",
+        "defines": [],
+        "structs": {
+            "WGPUChainedStruct": [
+                "nextInChain",
+                "sType"
+            ],
+            {% for type in by_category["structure"] if type.javascript %}
+                "{{as_cType(type.name)}}": [
+                    {% if type.chained %}
+                        "nextInChain",
+                        "sType"
+                    {%- elif type.extensible %}
+                        "nextInChain"
+                    {%- endif %}
+                    {% for member in type.members -%}
+                        {%- if (type.chained or type.extensible) or not loop.first -%}
+                            ,
+                        {% endif %}
+                        "{{as_varName(member.name)}}"
+                    {%- endfor %}
+
+                ]
+                {%- if not loop.last -%}
+                    ,
+                {% endif %}
+            {% endfor %}
+
+        }
+    }
diff --git a/src/dawn/BUILD.gn b/src/dawn/BUILD.gn
index dd6e890..fdfa5e9 100644
--- a/src/dawn/BUILD.gn
+++ b/src/dawn/BUILD.gn
@@ -37,6 +37,14 @@
   ]
 }
 
+dawn_json_generator("emscripten_bits_gen") {
+  target = "emscripten_bits"
+  outputs = [
+    "src/dawn/webgpu_struct_info.json",
+    "src/dawn/library_webgpu_enum_tables.js",
+  ]
+}
+
 source_set("dawn_headers") {
   all_dependent_configs = [ "${dawn_root}/src/common:dawn_public_include_dirs" ]
   public_deps = [
