Find file Copy path
125 lines (92 sloc) 4.47 KB

AMP HTML ⚡ Validator

A validator for the AMP HTML format.

If you just want to validate a page, please see our documentation over at

Chrome Extension

Please see chromeextension/

Visual Studio Code Extension

An extension for Visual Studio Code VSCode marketplace

Command Line Tool and Node.js API

Please see nodejs/

Web UI

Please see webui/

Building a Custom Validator

This is only useful for development - e.g. when making changes to engine/validator.js or when authoring an AMP extension, and it's rough around the edges. Below are instructions for Linux Ubuntu 14.



Install these packages using apt-get:

  • npm
  • openjdk-7-jre
  • protobuf-compiler
  • python-protobuf
  • python2.7

In addition, install Node.js v4.4.2. E.g., by downloading or by using a package manager or by using NVM.



  • npm
  • python 2.7 (should already be installed on OSX)
  • homebrew
    • protobuf

      brew install protobuf
      mkdir -p /Users/$(whoami)/Library/Python/2.7/lib/python/site-packages
      echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/$(whoami)/Library/Python/2.7/lib/python/site-packages/homebrew.pth
    • openjdk-7-jre

      brew tap caskroom/cask
      brew install Caskroom/cask/java


Then, run python This creates dist/validator_minified.js, which is equivalent to the validator deployed at You may now use the --validator_js command line flag to amphtml-validator to use this validator.

For use for testing with extensions, you can simply run python to run all of the validator tests in the amphtml repo. To create/update validator-*.out files that are used in the test, run python --update_tests.

$ amphtml-validator --validator_js dist/validator_minified.js testdata/feature_tests/several_errors.html
testdata/feature_tests/several_errors.html:23:2 The attribute 'charset' may not appear in tag 'meta name= and content='.
testdata/feature_tests/several_errors.html:26:2 The tag 'script' is disallowed except in specific forms.
testdata/feature_tests/several_errors.html:32:2 The mandatory attribute 'height' is missing in tag 'amp-img'. (see
testdata/feature_tests/several_errors.html:34:2 The attribute 'width' in tag 'amp-ad' is set to the invalid value '100%'. (see

Building on MacOS

Note: This is for building the validator from source. If you are simply running validator tests for extensions, see the Installation steps instead.

  • Download protobuf with brew install protobuf via homebrew.
  • Use pip to pip install google and pip install protobuf. If you don't have pip, you can get it either via brew install python or
  • If your npm is out of date, run npm i -g npm to update it.

To verify that you have the necessary prerequisites, run and verify:

$ protoc --version
libprotoc 3.5.1


$ python
>>> import google.protobuf

Now cd amphtml/validator and run python