Since Babel 7 the Babel team switched to scoped packages, so you now have to use @babel/core instead of babel-core.
But in essence, @babel/core is just a newer version of babel-core.

This is done to make a better distinction which packages are official and which are third-party.

Answer from MichaelDeBoey on Stack Overflow

Since Babel 7 the Babel team switched to scoped packages, so you now have to use @babel/core instead of babel-core.
But in essence, @babel/core is just a newer version of babel-core.

This is done to make a better distinction which packages are official and which are third-party.

Answer from MichaelDeBoey on Stack Overflow
🌐
npm
npmjs.com › package › @babel › core
@babel/core - npm
May 25, 2026 - Babel compiler core.. Latest version: 8.0.1, last published: a month ago. Start using @babel/core in your project by running `npm i @babel/core`. There are 24162 other projects in the npm registry using @babel/core.
      » npm install @babel/core
    
Published   Jun 17, 2026
Version   8.0.1
🌐
Babel
babeljs.io › usage guide
Usage Guide · Babel
The core functionality of Babel resides at the @babel/core module.
People also ask

What is Babel core used for?
Babel is a JavaScript compiler Babel is a toolchain that is mainly used to convert ECMAScript 2015+ code into a backwards compatible version of JavaScript in current and older browsers or environments.
🌐
exchangetuts.com
exchangetuts.com › what-is-the-difference-between-babel-core-and-at-babelcore-1639539467207819
What is the difference between babel-core and @babel/core?
What is the difference between Babel-core and Babel package?
babel-core is the API. For v5 the babel package is the CLI and depends on babel-core. For v6, the babel-cli package is the CLI (the CLI bin command is still babel though) and the babel package doesn't do anything. babel-runtime I guess is just the runtime (polyfill and helpers) to support code that's already been transformed.
🌐
exchangetuts.com
exchangetuts.com › what-is-the-difference-between-babel-core-and-at-babelcore-1639539467207819
What is the difference between babel-core and @babel/core?
What is Babel-CLI in Node 3?
3 Answers. babel-cli, which contains the babel command line interface babel-core, which contains the Node API and require hook babel-polyfill, which when required, sets you up with a full ES2015-ish environment To avoid accidental conflicts, make sure to remove any previous Babel packages like babel, babel-core, etc.
🌐
exchangetuts.com
exchangetuts.com › what-is-the-difference-between-babel-core-and-at-babelcore-1639539467207819
What is the difference between babel-core and @babel/core?
🌐
Babel
babeljs.io › @babel/core
@babel/core · Babel
var babel = require("@babel/core"); import { transform } from "@babel/core"; import * as babel from "@babel/core"; All transformations will use your local configuration files. babel.transform(code: string, options?: Object, callback: Function) Transforms the passed in code.
🌐
GitHub
github.com › babel › babel-bridge
GitHub - babel/babel-bridge: A placeholder package that bridges babel-core to @babel/core. · GitHub
The issue with Babel 7's transition to scopes is that if a package depends on Babel 6, they may want to add support for Babel 7 alongside. Because Babel 7 will be released as @babel/core instead of babel-core, maintainers have no way to do that transition without making a breaking change.
Starred by 94 users
Forked by 7 users
Languages   JavaScript
🌐
GitHub
github.com › storybookjs › storybook › issues › 4821
Build error from slow start - babel-core vs @babel/core · Issue #4821 · storybookjs/storybook
November 20, 2018 - ERROR in ./.storybook/config.js Module build failed (from ./node_modules/babel-loader/lib/index.js): Error: Cannot find module '@babel/core' babel-loader@8 requires Babel 7.x (the package '@babel/core').
Author   storybookjs
Top answer
1 of 1
94

babel

Babel doesn't do anything,It basically acts like const babel = code => code; 
by parsing the code and then generating the same code back out again.

You will need to add some plugins for Babel to do anything like transpiling es6,JSX.

babel-core

if you want to use babel in your real project, you need to install babel but 
there's no babel package available.

   babel split it up into two separate packages: babel-cli and babel-core

   **babel-cli** : which can be used to compile files from the command line.

   **babel-core** : if you want to use the Node API you can install babel-
      core, Same as "babel-cli" except you would use it programmatically inside your app.

   use "babel-cli" or "babel-core" to compile your files before production.

before move on,

preset vs plugin :

We can add features(es6,JSX) one at a time with babel plugins(es2015), 
    or 
we can use babel presets to include all the features(es6) of a particular year.

Presets make setup easier.

babel-preset-es2015

babel-preset-env supports es2015 features and replaces es2015, es2016, 
  es2017 and latest.

So use babel-preset-env, it behaves exactly the same as babel-preset-latest 
 (or babel-preset-es2015, babel-preset-es2016, and babel-preset-es2017 together).

babel-preset-react

transform JSX into createElement calls like transforming react pure class to 
   function and transform react remove prop-types.

babel-polyfill

Without babel-polyfill, babel only allows you to use features like arrow 
 functions, destructuring, default arguments, and other syntax-specific 
 features introduced in ES6.

The new ES6 built-ins like Set, Map and Promise must be polyfilled

To include the polyfill you need to require it at the top of the entry point 
  to your application. 

babel-loader

you done with babel-core, babel-cli, and why need preset, plugins and now 
  you are compiling ES6 to ES5 on a file-by-file basis by babel-cli every time.

to get rid-off this, you need to bundle the task/js file. For that you need 
   Webpack.

Loaders are kind of like “tasks”, They gives the ability to leverage 
 webpack's bundling capabilities for all kinds of files by converting them 
 to valid modules that webpack can process.

Webpack has great Babel support through babel-loader

devDependencies

When you deploy your app, modules in dependencies need to be installed or 
your app won't work. Modules in devDependencies don't need to be installed 
on the production server since you're not developing on that machine.

These packages are only needed for development and testing.

Isn't there any single dependency to replace them all?

as you read the above states, You need some presets and loaders to transpile 
 es2015 or JSX files.

babel -> @babel

Since Babel 7 the Babel team switched to scoped packages, so you now 
have to use @babel/core instead of babel-core.

Your dependencies will need to be modified like so:

babel-cli -> @babel/cli. Ex:  babel- with @babel/.
Find elsewhere
🌐
GitHub
github.com › babel › babel › discussions › 12605
What's the best practice of babel & core-js? · babel/babel · Discussion #12605
So any inlined usage of Promise will trigger polyfill-corejs3 to insert global polyfills before it will be replaced by a function of @babel/transform-runtime later. Beta Was this translation helpful? Give feedback. ... There was an error while loading. Please reload this page. Something went wrong. There was an error while loading. Please reload this page. ... What is the point of using something like core-js with @babel/core.
Author   babel
Top answer
1 of 3
46

babel-core is the API. For v5 the babel package is the CLI and depends on babel-core. For v6, the babel-cli package is the CLI (the CLI bin command is still babel though) and the babel package doesn't do anything. babel-runtime I guess is just the runtime (polyfill and helpers) to support code that's already been transformed.

2 of 3
21

TL;DR The things to compare here are:

  1. babel (use for 5.x.x) vs babel-cli+babel-core (pick one for 6.x.x)
  2. babel-polyfill (use for non-libraries) vs babel-runtime+babel-plugin-transform-runtime (use for libraries)

From https://babeljs.io/blog/2015/10/31/setting-up-babel-6:

The babel package is no more. Previously, it was the entire compiler and all the transforms plus a bunch of CLI tools, but this lead to unnecessarily large downloads and was a bit confusing. Now we’ve split it up into two separate packages: babel-cli and babel-core.

npm install --global babel-cli

or

npm install --save-dev babel-core

If you want to use Babel from the CLI you can install babel-cli or if you want to use the Node API you can install babel-core.

babel-runtime just allows polyfills that don't pollute the global space, unlike babel-polyfill which pollutes your global space. From http://babeljs.io/docs/plugins/transform-runtime/:

[babel-runtime] automatically polyfills your code without polluting globals. (This plugin is recommended in a library/tool)

If you use babel-runtime, you should also

npm install --save-dev babel-plugin-transform-runtime

In most cases, you should install babel-plugin-transform-runtime as a development dependency (with --save-dev) and babel-runtime as a production dependency (with --save).

The transformation plugin is typically used only in development, but the runtime itself will be depended on by your deployed/published code.

Also, babel-runtime+babel-plugin-transform-runtime and babel-polyfill are generally mutually exclusive--meaning you should only use one or the other. From a comment here http://jamesknelson.com/the-six-things-you-need-to-know-about-babel-6/:

You should be using either babel-polyfill or babel-runtime. They are mutually exclusive—unless of course you know what you are doing. But they are essentially the same thing. These are just helpers. babel-polyfill achieves the same goal by mutating globals whereas babel-runtime does so modularly. Unless you are developing a library, I’d recommend you use the polyfill.

🌐
Babel
babeljs.io › docs › v7-migration
Upgrade to Babel 7 · Babel
For both you still need the @babel/plugin-transform-runtime ... So if you need core-js support with transform-runtime, you would now pass the corejs option and use the @babel/runtime-corejs2 dependency instead of @babel/runtime.
🌐
webpack
webpack.js.org › loaders › babel-loader
babel-loader | webpack
To fix this, you should uninstall the npm package babel, as it is deprecated in Babel v6. (Instead, install @babel/cli or @babel/core.) In the case one of your dependencies is installing babel and you cannot uninstall it yourself, use the complete name of the loader in the webpack config:
🌐
GitHub
github.com › babel › babel › issues › 6824
@babel/core required even when using old babel-core (7.0.0-beta.3) · Issue #6824 · babel/babel
November 14, 2017 - I'm using older beta-version of babel (7.0.0-beta.3). When trying to build my (react) project as usual, I get this error: Cannot find module '@babel/core'
Author   babel
🌐
StackShare
stackshare.io › stackups › npm--babel-core-vs-npm-core-js
@babel/core vs core-js | What are the differences? | StackShare
# Introduction ## Key Differences ... purpose. @babel/core is a JavaScript compiler that is primarily used to convert ECMAScript 2015+ code into a backwards-compatible version of JavaScript that can be run on older browsers...
🌐
Babel
babeljs.io › docs › core-packages
Babel's core packages · Babel
babel-core: The core module that wraps everything in our transform api (used for integrations) babel-generator: Prints a string from an AST · babel-types: Babel Types is a Lodash-esque utility library for AST nodes · babel-register: The require hook will bind itself to node's require and ...
🌐
Npm
npm.io › package › @babel › core
@babel/core NPM | npm.io
The issue with Babel 7's transition to scopes is that if a package depends on Babel 6, they may want to add support for Babel 7 alongside. Because Babel 7 will be released as @babel/core instead of babel-core, maintainers have no way to do that transition without making a breaking change.