diff --git a/bazel/emscripten_toolchain/wasm_binary.py b/bazel/emscripten_toolchain/wasm_binary.py
index 466e789..97df45b 100644
--- a/bazel/emscripten_toolchain/wasm_binary.py
+++ b/bazel/emscripten_toolchain/wasm_binary.py
@@ -18,17 +18,11 @@
 WebAssembly binary into a larger web application.
 """
 
+import argparse
 import os
 import subprocess
 import sys
 
-from absl import app
-from absl import flags
-
-FLAGS = flags.FLAGS
-flags.DEFINE_string('archive', None, 'The the archive to extract from.')
-flags.DEFINE_string('output_path', None, 'The path to extract into.')
-
 
 def ensure(f):
   if not os.path.exists(f):
@@ -41,44 +35,49 @@
     raise Exception('Expected file in archive: %s' % f)
 
 
-def main(argv):
-  basename = os.path.basename(FLAGS.archive)
+def main():
+  parser = argparse.ArgumentParser()
+  parser.add_argument('--archive', help='The archive to extract from.')
+  parser.add_argument('--output_path', help='The path to extract into.')
+  args = parser.parse_args()
+
+  basename = os.path.basename(args.archive)
   stem = basename.split('.')[0]
 
   # Check the type of the input file
-  mimetype_bytes = subprocess.check_output(['file', '-Lb', '--mime-type', '--mime-encoding', FLAGS.archive])
+  mimetype_bytes = subprocess.check_output(['file', '-Lb', '--mime-type', '--mime-encoding', args.archive])
   mimetype = mimetype_bytes.decode(sys.stdout.encoding)
 
   # If we have a tar, extract all files. If we have just a single file, copy it.
   if 'tar' in mimetype:
     subprocess.check_call(
-        ['tar', 'xf', FLAGS.archive, '-C', FLAGS.output_path])
+        ['tar', 'xf', args.archive, '-C', args.output_path])
   elif 'binary' in mimetype:
     subprocess.check_call([
         'cp',
-        FLAGS.archive,
-        os.path.join(FLAGS.output_path, stem + '.wasm')])
+        args.archive,
+        os.path.join(args.output_path, stem + '.wasm')])
   elif 'text' in mimetype:
     subprocess.check_call([
         'cp',
-        FLAGS.archive,
-        os.path.join(FLAGS.output_path, stem + '.js')])
+        args.archive,
+        os.path.join(args.output_path, stem + '.js')])
   else:
-    subprocess.check_call(['cp', FLAGS.archive, FLAGS.output_path])
+    subprocess.check_call(['cp', args.archive, args.output_path])
 
   # At least one of these two files should exist at this point.
-  ensure(os.path.join(FLAGS.output_path, stem + '.js'))
-  ensure(os.path.join(FLAGS.output_path, stem + '.wasm'))
+  ensure(os.path.join(args.output_path, stem + '.js'))
+  ensure(os.path.join(args.output_path, stem + '.wasm'))
 
   # And can optionally contain these extra files.
-  ensure(os.path.join(FLAGS.output_path, stem + '.wasm.map'))
-  ensure(os.path.join(FLAGS.output_path, stem + '.worker.js'))
-  ensure(os.path.join(FLAGS.output_path, stem + '.js.mem'))
-  ensure(os.path.join(FLAGS.output_path, stem + '.data'))
-  ensure(os.path.join(FLAGS.output_path, stem + '.fetch.js'))
-  ensure(os.path.join(FLAGS.output_path, stem + '.js.symbols'))
-  ensure(os.path.join(FLAGS.output_path, stem + '.wasm.debug.wasm'))
+  ensure(os.path.join(args.output_path, stem + '.wasm.map'))
+  ensure(os.path.join(args.output_path, stem + '.worker.js'))
+  ensure(os.path.join(args.output_path, stem + '.js.mem'))
+  ensure(os.path.join(args.output_path, stem + '.data'))
+  ensure(os.path.join(args.output_path, stem + '.fetch.js'))
+  ensure(os.path.join(args.output_path, stem + '.js.symbols'))
+  ensure(os.path.join(args.output_path, stem + '.wasm.debug.wasm'))
 
 
 if __name__ == '__main__':
-  app.run(main)
+  main()
