Chroma FAQ

How do we test out the ChromaLink functionality?

You can download the Emulator here. Our latest Sample Application will also allow you to preview ChromaLink effects too.

The Kraken 7.1 Chroma reacts to the SDK a lot more slowly as compared to the mouse, mousepad, keyboards and keypads. E.g. transits to a new color slower

We are aware of this issue but unfortunately, the solution lies within the firmware level and thus can’t be fixed as quickly as if it was an issue within the SDK.

That being said, we have begun the processes to build and push out a new firmware to the headset that will iron this out. I’ll keep you updated on that.

How do I code for the various regional layouts and Razer’s line of laptops accurately using the BlackWidow Chroma?

From SDK version 1.6, we will provide a new API that allows you to accurately map the BlackWidow Chroma effects across for both our keyboards and laptops. For existing integrations, the change will only require you to change a few lines of code.


CHROMA_CUSTOM acts like a drawing canvas while CHROMA_CUSTOM_KEY gives you the canvas plus key effects regardless of physical or region layout.

This new API allows developers to create effects on keyboard without having to worry about the location of the physical keys. The data structure contains 2 x 2D array with one represents a canvas and the other key effects.

For an example, when an animated effect (wave) with blinking W, A, S, D effect runs on a BW Chroma with US layout, you will see the wave effect as the background and blinking W, A, S, D overlaying on top. Running this on a Blade will see the exact result despite the Blade having a different physical key layout compared to a BW Chroma. Running this effect on a French layout BW Chroma will yield the same result even though the localized key layout is different.

The difference between CHROMA_CUSTOM_KEY and CHROMA_CUSTOM is with CHROMA_CUSTOM, the effect will appear at the location as it is. Hence, different keyboard layouts will result in the effect appearing differently. With CHROMA_CUSTOM_KEY, the developer is guaranteed that effect appears the same for all keyboard layouts.

How do we best ensure compatibility across all headsetes such as the Kraken 7.1 Chroma and the Kraken 7.1 V2?

For headsets the recommend effect use is still Static effect to ensure future compatibility across all headsets. This is because the Kraken 7.1 Chroma only supports STATIC effects while the Kraken 7.1 V2 has a more advanced LED controller that allows for both Static and Custom. Hence, the best choice will be to solely use Static for support across all headsets.

The Chroma SDK supported games and applications aren’t showing any Chroma effects. How do I fix it?

Please try the following steps:

  1. Ensure that if you’re on
    • Windows 7 – Download an additional Windows patch KB299926 that was not included in the regular updates
    • Windows 8/8.1/10 – Ensure you have the latest Windows update installed
  2. Check if the Razer Chroma SDK Service is running
    • Launch the “Services” application (Under Programs>Windows Administrative Tools)
    • Locate the “Razer Chroma SDK Service” and ensure that it is Running by either Starting/Restarting it
  3. Reinstall the Chroma SDK Core Components
    • Go to “Program and Features”
    • Uninstall Razer Chroma SDK Core Components
    • Download and install the latest SDK installer
    • Run Synapse
  4. Try running Overwatch or any other applications from the Chroma Workshop such as Snake/Audio Visualizer (ensure Chroma Apps is turned on) and let us know the result in Step (5)
  5. If the above few steps doesn’t work, please provide contact us with
    • Your log files
      • Close Synapse
      • Go to C:\ProgramData\Razer\Synapse\Logs, zip it up and attach it via email to me
    • The list of Chroma peripherals that you have
    • Version of Windows that you’re on

At low rates, I’m noticing that the mouse and pad change slightly before the keyboard does. Reducing the delay down below 100ms starts to really get out of sync and the keyboard seems to lose steady timing.

At very low frequency (i.e. <50ms) it is very difficult to see the latency but the keyboard seems to be able to service the requests at a slightly higher frequency than the mouse and the mouse mat. Each devices has their hardware and firmware developed differently so it is normal that each devices behave differently. We have already optimized the performance to reduce the latency between different devices. However we do note that the latency is still an (minor) issue in this case but we will monitor it and will put into the design consideration for future updates.

Certain keys do not exist in different keyboard layouts.

Take, for example, a BlackWidow Chroma US Format keyboard. In the grid implementation, using grid index [3, 13] (fourth row, fourteenth key as programmers start from 0), the key does not exist. This may make it extremely hard to write using the grid, as although 90% of it is correct, there are ‘ghost’ keys that may be present on other regional versions keyboard.

The virtual grid is provided as a “canvas” for developers to create effects without the knowledge of keyboard layout. This way effects can be show on other keyboards without changing the application code. We want to maintain this universal compatibility as part of the SDK flexibility. If the keyboard layout is concerned, there are keys defined for specific keyboard layout (Europe, Korean, Japanese, etc). Developers can fill the virtual grid then using the specific keys for different layouts for those “ghost” keys.

A suggested workaround would be to avoid specific potential invisible keys that might be spilt into 2 in different layouts.


RED: row

GREEN: column


  • 0x0000 (Left of ESC)
  • 0x0002 (Right of ESC)
  • 0x0018 (Empty area)
  • 0x0019 (Empty area)
  • 0x0020 (Empty area)
  • 0x0021 (Empty area, sometimes used in Japan and Korea layouts)
  • 0x0214 (Backslash which sometimes is part of enter in certain layouts)
  • 0x0313 (Partial Enter)
  • 0x0314 (Enter)
  • 0x0315 (Empty area above directional key buttons)
  • 0x0316 (Empty area above directional key buttons)
  • 0x0317 (Empty area above directional key buttons)
  • 0x0321 (+ button on numpad is a single LED taking up 2 coordinates)
  • 0x0401 (Left Shift)
  • 0x0402 (Left Shift sometimes splits into 2 LEDs to accommodate Nordic layouts)
  • 0x0413 (Right Shift key sometimes spilt into 2 LEds to accommodate Japanese layouts)
  • 0x0414 (Right Shift key)
  • 0x0415 (Empty area above directional key buttons)
  • 0x0417 (Empty area above directional key buttons)
  • 0x0504 (Space area sometimes spilt into several LEDs to accommodate different layouts)
  • 0x0505(Space area sometimes spilt into several LEDs to accommodate different layouts)
  • 0x0506 (Space area sometimes spilt into several LEDs to accommodate different layouts)
  • 0x0508 (Space area sometimes spilt into several LEDs to accommodate different layouts)
  • 0x0509 (Space area sometimes spilt into several LEDs to accommodate different layouts)
  • 0x0510 (Space area sometimes spilt into several LEDs to accommodate different layouts)
  • 0x0518 (0 on numpad is a single LED taking up 2 coordinates)
  • 0x0521 (Enter on numpad is a single LED taking up 2 coordinates)

Is reactive supported for mice?

Reactive is not supported in mice as it requires inter-device communication with mouse mats.

Where is the Chroma work done – on CPU? On the hardware?

Setting up effects are done on the CPU. It can be created dynamically or statically.

Animations are done in “Frames”. i.e. Frame 1 = No lighting (blank); Frame 2 = Red brightness 50%; Frame 3 = Blue brightness = 100%, etc. Each frame (data) will be send to ChromaSDK sequentially by the client. The period of sending the frames is also determined by the client.

These frame(data) will be forwarded to a background Windows service which communicates with the devices. The frequency of servicing the data is limited to a maximum period of 10ms per frame but is not limited to all devices, as some devices has a lower frequency (2ms).

ChromaSDK and its Windows service runs separately and are independent of each other.

What is the load?

The largest load is size of DWORD * 6(rows) * 22(columns) which is for keyboards. The smallest is the size of DWORD * 15 which is for Firefly.

What is the input latency?

Input latency is determined by the client. Although there are some minor overheads but most of them are just conditions for checking in the SDK..

How do I “control” my game/app information within Synapse?

Your executable needs to initialize the Chroma SDK. Use a call to InitSDK in order to provide details for Synapse.

The Chroma lightings are not reacting even though I have everything ready. It specifically returns “RESOURCE_DISABLED” when an effect is triggered.

Please ensure that under Synapse, you have “Chroma Apps” turned on.

Why have some of the previously cool effects such as Breathing and Wave have been depreciated?

We want to foster an environment whereby the developers have flexibility and creativity of creating their own unique effects.

My app crashes due to the IsSDKAvailable() method in Colore

In the previous version of the SDK, it was possible to check whether the SDK was available on each user’s machine before launching an app. Due to a recent change, applications using the IsSDKAvailable() method in Colore v2.3 will always receive a false value.

Can the Chroma SDK library be loaded in Windows session 0?

We removed the ability to load Chroma SDK library in Windows session 0 (Windows Services) for security and performance concerns.