The compiler for writing next generation JavaScript.

    Business Strategy Status Travis Status CircleCI Status Coverage Status Slack Status NPM Downloads

    Babel is a community-driven tool that helps you write the latest version of JavaScript.

    When your supported environments don't support certain features natively, it will help you compile it down to a supported version.


    // ES2015 arrow function
    [1, 2, 3].map((n) => n + 1);


    [1, 2, 3].map(function(n) {
      return n + 1;

    Try it out at our REPL and follow us at @babeljs.



    Check out our website:

    Looking for support?

    For questions and support please visit our discussion forum, sign up for our Slack community, or StackOverflow.

    Want to report a bug or request a feature?

    Bugs and feature requests can be posted at

    We've moved our issues from phabricator back to github issues!

    Former phabricator issue urls now automatically redirect to their corresponding Github issue: mostly corresponds to

    Want to report an issue with (the website)?

    For documentation and website issues please visit the babel/ repo.

    Want to contribute to Babel?

    Check out our If you have already joined slack, join our #development channel!

    You can also start by checking out the issues with the help-wanted label.

    Our discussions/notes/roadmap: babel/notes


    The Babel repo is managed as a monorepo; it's composed of many npm packages.

    Core Packages

    Package Version Dependencies
    babel-core npm Dependency Status
    babylon npm Dependency Status
    babel-traverse npm Dependency Status
    babel-generator npm Dependency Status

    babel-core is the Babel compiler itself; it exposes the babel.transform method, where transformedCode = transform(src).code.

    The compiler can be broken down into 3 parts:

    • The parser: babylon (moved to a separate repo and versioned independently)
    • The transformer[s]: All the plugins/presets
    • The generator: babel-generator

    The flow goes like this:

    input string -> babylon parser -> AST -> transformer[s] -> AST -> babel-generator -> output string

    Check out the babel-handbook for more information on this.


    Package Version Dependencies
    babel-cli npm Dependency Status
    babel-types npm Dependency Status
    babel-polyfill npm Dependency Status
    babel-runtime npm Dependency Status
    babel-register npm Dependency Status
    babel-template npm Dependency Status
    babel-helpers npm Dependency Status
    babel-code-frame npm Dependency Status
    • babel-cli is the CLI tool that runs babel-core and helps with outputting to a directory, a file, stdout and more (also includes babel-node). Check out the docs.
    • babel-types is used to validate, build, change AST nodes.
    • babel-polyfill is literally a wrapper around core-js and regenerator-runtime. Check out the docs.
    • babel-runtime is similar to the polyfill except that it doesn't modify the global scope and is to be used with babel-plugin-transform-runtime (usually in library/plugin code). Check out the docs.
    • babel-register is a way to automatically compile files with babel on the fly by binding to node's require. Check out the docs.
    • babel-template is a helper function to make AST nodes. Instead you can pass a string representing the code you want to create rather than tediously building them using babel-types.
    • babel-helpers is a set of premade babel-template functions that are used in some babel plugins.
    • babel-code-frame is a standalone package used to generate errors that prints the source code and points to error locations.


    After Babel 6, the default transforms were removed; if you don't specify any plugins/presets it will just return the original source code.

    The transformer[s] used in Babel are the independent pieces of code that transform specific things. For example: the es2015-arrow-functions transform specifically changes arrow functions into a regular function. Presets are just simply an array of plugins that make it easier to run a whole a set of transforms without specifying each one manually.

    Package Version Dependencies Description
    babel-preset-env npm Dependency Status automatically determines plugins and polyfills you need based on your supported environments

    You can find community maintained presets on npm


    Plugins are the heart of Babel and what make it work.

    You can find community plugins on npm.

    Transform Plugins

    There are many kinds of plugins: ones that convert ES6/ES2015 to ES5, transform to ES3, minification, JSX, flow, experimental features, and more. Check out our website for more.

    Syntax Plugins

    These just enable the transform plugins to be able to parse certain features (the transform plugins already include the syntax plugins so you don't need both): babel-plugin-syntax-x. Check out our website for more.


    These are mostly for internal use in various plugins: babel-helper-x.


    Core members

    Babel Daniel Tschinder Logan Smyth Henry Zhu
    Babel Daniel Tschinder Logan Smyth Henry Zhu
    :octocat: @babel @danez @loganfsmyth @hzoo
    🐦 @babeljs @TschinderDaniel @loganfsmyth @left_pad


    Andrew Levine Boopathi Rajaa Brian Ng Dan Harper diogo franco Aaron Ang Artem Yavorsky
    Andrew Levine Boopathi Rajaa Brian Ng Dan Harper Diogo Franco Aaron Ang Artem Yavorsky
    @drewml @boopathi @existentialism @danharper @kovensky @aaronang @yavorsky
    @drewml @heisenbugger @existentialism @DanHarper7 @kovnsk @_aaronang @yavorsky_
    Juriy Zaytsev Kai Cataldo Moti Zilberman Sven Sauleau Samuel Reed Sergey Rubanov
    Juriy Zaytsev Kai Cataldo Moti Zilberman Sven Sauleau Samuel Reed Sergey Rubanov
    @kangax @kaicataldo @motiz88 @xtuc @STRML @chicoxyzzy
    @kangax @kai_cataldo @motiz88 @svensauleau @STRML_ @chicoxyzzy

    Non-Human Members

    Babel Bot

    Inactive members

    Amjad Masad James Kyle Jesse McCarthy Sebastian McKenzie (Creator)
    Amjad Masad James Kyle Jesse McCarthy Sebastian McKenzie
    @amasad @thejameskyle @jmm @sebmck
    @amasad @thejameskyle @mccjm @kittens




    🐠 Babel is a compiler for writing next generation JavaScript.

    🚀 Github 镜像仓库 🚀


    发行版本 131



    贡献者 279



    • TypeScript 53.7 %
    • JavaScript 45.4 %
    • Shell 0.5 %
    • Makefile 0.2 %
    • Prolog 0.1 %