How do I set up semantic completion?

Why do you say Tabnine is "simple"?

  1. Tabnine works for all programming languages.
  2. Tabnine does not require any configuration in order to work.
  3. Tabnine does not require any external software (though it can integrate with it).
  4. Since Tabnine does not parse your code, it will never stop working because of a mismatched bracket.

My project isn't a Git or Mercurial repository. How can I make Tabnine index it?

Add a file named .tabnine_root to the root of your project directory. Tabnine respects .tabnineignore, .gitignore, .hgignore, and .ignore files.

I don't like the message in the autocomplete popup telling me that I can upgrade to index more files.

You can disable it by typing Tabnine::hide_promotional_message. The popup only exists to ensure users are aware the paid version exists.

Is there a risk that Tabnine will leak my source code?

By default, Tabnine makes web requests only for the purposes of downloading updates and validating registration keys. In this case your code is not sent anywhere, even to Tabnine servers.

You may opt in to Tabnine Cloud, which allows you to use Tabnine's servers for GPU-accelerated completions powered by a deep learning model. If sending code to a cloud service is not possible, we also offer a self-hosted option. Contact us at

Can I use Tabnine on multiple machines?

Licenses are per-user, rather than per-machine, so you can use Tabnine on as many computers and operating systems as you wish with your license.

How does Tabnine detect file encodings?

All files are decoded as UTF-8. If a file is not valid UTF-8, it will not be indexed.

When I try to open the config panel, it says it couldn't start a web browser.

This issue usually occurs when you are running Tabnine on a machine without a GUI. The following options may help:

  • Use port forwarding to view the config panel from your local machine. If your remote machine's address is janedoe@, and Tabnine is listening on port 5555, the following command will do this:

    ssh -L 5555: janedoe@

    You can then access the config panel by copying the URL printed by Tabnine into your local web browser. Note that the string of random characters must be included, or else the config panel will hang with a "Loading..." message.

  • Use a web browser that does not require a window manager to access the config panel from the remote machine.
  • Copy a working config file from another machine. You can find the file location by typing Tabnine::config_dir and adding tabnine_config.json to the end of the path.

I purchased a one-time license in the past, but I see this is not offered anymore. What will happen to my license?

Your activated copy of Tabnine will continue to work without any action required from you.

If you choose to upgrade to Tabnine Pro in order to access the new deep learning features, you can apply the full price of your license as a discount to your subscription.

What language is Tabnine written in?

Tabnine is 14,000 lines of Rust.

In recognition of the fact that Tabnine could not exist without the Rust ecosystem, Tabnine's paid features are always enabled when completing Rust code.

Why is it called Tabnine?

When using the Sublime Text client for Tabnine, the keyboard shortcut to select the ninth suggestion is Tab+9.

Here are some other names which were duly considered:

  • TabTab
  • CodeBuddy
  • Say Yes to the Keypress (SYT²KP)
  • Dieter the Autocompleter

What are the special commands that can be given to Tabnine?

To enter any of these commands, simply type them into your text editor while Tabnine is running.

  • Tabnine::config opens the configuration panel.
  • Tabnine::version gives the current Tabnine version.
  • Tabnine::config_dir gives the directory where Tabnine stores its configuration.
  • Tabnine::active checks whether Tabnine has been activated.
  • Tabnine::restart restarts Tabnine.
  • Tabnine::become_beta_tester causes you to receive beta releases of Tabnine.
  • Tabnine::ignore_semantic causes all semantic completion error messages to be ignored.
  • Tabnine::unignore_semantic stops all semantic completion error messages from being ignored.
  • Tabnine::sem enables semantic completion for the current language.
  • Tabnine::no_sem disables semantic completion for the current language.

Tabnine model installation fails, or hangs, what can I do?

When enabled, the Tabnine deep model provides superior code suggestions.
Unless stated otherwise, Tabnine will attempt to download the deep model everytime it restarts until it is successful. Having said that, there are cases in which the model cannot be downloaded (e.g. your machine is behind a proxy, your organization policy blocks certain HTTP requests, etc.).

Resolving failed installations:

  1. Manually download the deep-learning model
    1. In your IDE, type "Tabnine::config" to open Tabnine's configuraiton server
    2. In Tabnine's configuration server, under "Deep Tabnine Local" section, click on "Download the deep model file from here" link.
  2. Add a ".tabninemodel" extension to the downloaded file
  3. Place the file in the following path (location varies between OSes):
    • Windows: C:\{UserName}\AppData\Roaming\Tabnine\models\
    • Linux: /home/{UserName}/.local/share/Tabnine/models/
    • MacOS: /Users/{UserName}/Library/Application Support/Tabnine/models/
  4. Restart Tabnine/your IDE

for further assistance, contact us at

Which code editors are officially supported by Tabnine?

Code editor support is implemented in open source plugins. Below are officially supported code editors:

The below editors are supported through community developed plugins:

If you are aware of open source plugins that support Tabnine, let us know and we will add them to this list.

Does Tabnine collect telemetry?

Tabnine collects minimal technical and usage telemetry to improve performance.

The telemetry collected will never include your code!

If you don't wish to send telemetry to Codota, you can opt-out in the Settings section.

Our code privacy and telemetry contain a detailed description of the data Codota collects and what it is used for.

Does Tabnine store and use my own code?

Tabnine defaults to a local configuration. Models are downloaded to your local development machine only - the code never leaves your machine.

Tabnine models train using open source libraries. Your code is not being used to further train our models.

Learn more on how Tabnine protects your code.

What are FMA instructions and how can I check if my machine supports them?

Tabnine uses fused multiply-add (FMA) instructions to perform efficient floating-point operations on your machine. FMA is supported by most modern hardware. To check if your machine supports FMA instructions, you can run the following:

sysctl -a | grep -E 'FMA|AVX2'
If you have matches for both FMA and AVX2, you are good to go!

cat /proc/cpuinfo | grep -E 'fma|avx2'
If you have matches for both FMA and AVX2, you are good to go!

Use Coreinfo to check for support for FMA and AVX2 instructions.