Frequently Asked Questions


WakaTime only tracks your coding activity when you’re typing or changing things in your text editor or IDE. The plugins “ping” our api with heartbeat events when you’re using your IDE. When the heartbeats stop, that tells us you stopped using your IDE or text editor. Set a timeout value (default 15 minutes) to tell us how long until we mark you as AFK. When you’re not using your text editor for longer than your timeout value, we stop counting you as active.

For example, if you took a 10 minute break and your timeout is set to the default 15 minutes, the 10 minutes where you were AFK will be logged. However, setting your timeout to 5 minutes would not log your 10 minute break.

WakaTime accurately detects the time you code in each file and project, down to the second.

This high-level state machine shows how:

  1. WakaTime starts a timer when you begin editing a file.
  2. The timer is stopped when you go AFK by reaching your timeout setting. When you go AFK, WakaTime rewinds the timer until the time you last edited the file.
  3. The timer is also stopped when you switch to editing a different file. In this case, WakaTime saves the time from when you started editing the original file until when you switched to the new file. The time is reset and we start over at step 1 with the new file.

Your public profile uses the default 15 minute timeout value with a time range of Last 7 Days from Yesterday.

We also subtract coding activity from language Other.

The leaderboards use the same formula as your public profile.

Setting your preferences to the defaults, matching the leaderboard time range, and subtracting coding activity categorized as language Other will show the same coding activity as your dashboard.

When working offline with supported editors* your coding actiity is saved in an sqlite3 database at $HOME/.wakatime.db. The next time you use your IDE when online, your coding activity is syncronized to your WakaTime dashboard.

* All editor plugins using the wakatime-cli have support for offline coding, except the Chrome and Brackets extensions.

Data & Privacy

WakaTime sends heartbeat events triggered from user actions inside your text editor to the WakaTime API.

Heartbeat events contain data such as:

  • absolute path of current file [1]
  • current time as a UNIX epoch float (seconds.milliseconds)
  • whether the event was triggered from writing to a file
  • project name from a supported revision control
  • branch name from a supported revision control
  • total number of lines from the file as an integer
  • current cursor position as an integer
  • syntax language guessed from the file, for example Python or JavaScript
  • libraries and frameworks detected from the file, for example Flask or Rails
  • your computer’s hostname, like MacbookPro.local or HOME-PC

Heartbeat events are sent:

  • every 2 minutes if you are actively using your text editor
  • when you switch between files
  • every time you write to a file

The easiest way to hide files/folders from WakaTime is adding them to the exclude array in your $HOME/.wakatime.cfg file.

For example, to prevent tracking all folders named private:

[settings] exclude = /private/

For Windows use escaped backslashes or a character class to match both forward slash and backslash:

[settings] exclude = \\private\\ [/\\]secret[/\\]

You can list multiple paths in your config file, and each path is a POSIX regular expression:

[settings] exclude = ^/var /private_\d+/

The above example excludes any path starting with /var and also any folder named private_123 where 123 can be any number.

You can also configure WakaTime to obfuscate file names by adding hidefilenames = true to your $HOME/.wakatime.cfg file.

This means only your project names will be sent to the website, so you can not see coding activity per file.

The hidefilenames setting also accepts a list of folders instead of just true or false, for example:

hidefilenames = /path/to/private/folder/ /another/folder[\d+]/matched/by/regex/

Note: Sublime Text users won’t have a $HOME/.wakatime.cfg file, so create one using this example config.

After excluding files, to delete any related coding activity from your dashboard use the Coding Activity Delete Tool.

Yes, you can export all your coding activity in JSON format here.

No, your coding history is saved even on the free plan. The dashboard limitation is to prevent overwhelming our servers with having to process too much data. However, your coding activity is kept and made available if you choose to upgrade sometime in the future.


WakaTime creates projects for you automatically, using one of these methods.

This means you don’t manually create projects.

Instead, use your IDE like normal and projects are created automatically in the background.

We work hard to keep WakaTime completely passive, so it never gets in your way.

WakaTime recognizes the project’s name one of four ways:

  1. Revision control software (Ex: Git, Mercurial, or Subversion):

    To set the project name for a folder, go to that folder in a terminal and type:

    git init

    Files inside that folder will be assigned to a project with that folder’s name.

    * only renames projects for new coding activity

  2. Create a .wakatime-project file inside your project directory. Type the project name as the first line of this file and WakaTime will use that project name for all files inside this directory.

    * only renames projects for new coding activity

  3. Adding the project directory to your ~/.wakatime.cfg file under the [projectmap] section.

    * only renames projects for new coding activity

  4. As a last resort use custom rules:

    * Warning: this will rename projects from past coding activity. Use with caution!

To delete a project, first remove it’s coding activity using the Coding Activity Delete Tool.

After removing the project’s coding activity, you can delete the project from the project’s dashboard. A project dashboard without coding activity will have a “trash icon” in the top right corner.

To exclude projects in the future, add the project’s path to your $HOME/.wakatime.cfg file under the exclude setting.


Make sure the plugin is correctly installed in your editor. ( Look for a WakaTime menu under File/Tools )

Check the plugin status page for when your editor was last seen, and if a new version is available. If your editor isn’t listed or hasn’t been seen in a while, first turn on debug mode then check for errors in your log files:

  • Most WakaTime plugins have a WakaTime Settings menu in the Tools or File menu of your IDE.
  • Vim can turn on debug mode with :WakaTimeDebugEnable
  • Sublime Text has a debug option in your WakaTime.sublime-settings

With debug mode on, check your IDE log file and your $HOME/.wakatime.log file for error messages.

If you use multiple computers, find when a computer’s hostname was last heard from using the Machine Names API.

The value is the Hostname and ip is the IP Address of your machine.

To see your recent raw coding activity, use the Heartbeats API.

Please create a new issue in the appropriate GitHub repo with any error messages.

  1. All WakaTime plugins use a common core (wakatime-cli) for communicating with the API.

    This common core writes errors to $HOME/.wakatime.log.

  2. Errors from the editor plugin go to your IDE’s log file:

    Locating your IDE’s log file

  3. Please create a new issue in the appropriate GitHub repo with your error messages.

To view your api key, go to your API Key page, or your Account Settings page.

To generate a new api key, go to your Account Settings page and click the refresh button ().

Make sure to update your api key:

Yes, all WakaTime plugins play well together. You can switch between multiple supported editors and your coding activity will be syncronized correctly. If you use revision control software, your project will be detected even when using multiple editors.