Custom telemetry scripts in Counter-Strike 2

Custom Telemetry Scripts In Counter-Strike 2

Hold, toggle and TAB scripts for CS2 telemetry instead of net_graph: FPS, ping, packet loss and network graphs on one key, plus cl_showfps and how to load it all

In older Counter-Strike you checked FPS, ping and packet loss with net_graph. In Counter-Strike 2 that command is gone, its job is done by CS2 telemetry: frame time, ping, packet loss and network graphs right on the HUD.

You can turn telemetry on in the settings, but a script is handier: the stats show up when you want them and the HUD stays clean the rest of the time. Below are the commands, three kinds of telemetry scripts (hold, toggle, TAB), how to add cl_showfps and how to load it all with a config, autoexec or launch options.

CS2 Telemetry Commands: the net_graph Replacement

Telemetry is controlled by a few console variables. Each of them shows one block on the HUD. The descriptions below are how the game itself describes them:

Command What it shows Default
cl_hud_telemetry_frametime_show Frame time and FPS 1
cl_hud_telemetry_ping_show Ping 1
cl_hud_telemetry_net_misdelivery_show Percent of your commands and server snapshots lost to the network 1
cl_hud_telemetry_net_detailed Breakdown of those problems: loss, late delivery and peak jitter 0
cl_hud_telemetry_net_quality_graph_show Graph of packet jitter, loss and reordering 0
cl_hud_telemetry_serverrecvmargin_graph_show Graph of how early or late your commands reach the server 0

All of them take three values: 0 never, 1 only when there's a problem (low FPS, high ping, packet loss), 2 always. Note the defaults: FPS, ping and packet loss are on 1, so the game warns you by itself when something goes wrong. That's why my scripts below return to 1 instead of 0, otherwise you lose those warnings.

What counts as "poor" is set by three more settings: cl_hud_telemetry_frametime_poor (100), cl_hud_telemetry_ping_poor (100 ms) and cl_hud_telemetry_net_misdelivery_poor (2%). How to read every number and graph is in my main CS2 telemetry guide.

Best CS2 Telemetry Binds and Scripts

Three CS2 HUD screenshots with telemetry: FPS, ping, jitter, packet loss and network quality graphs
CS2 telemetry on the HUD: FPS, ping, loss and the network graph

Three ways to put telemetry on a key: show it while you hold a key, show it with the scoreboard on TAB, or turn it on and off with one press. All of them use J as an example, because it's free in CS2 by default. Change it to whatever you like.

Hold to Show Telemetry

The simplest and most natural option. Hold the key and you see everything, let go and the HUD is clean again.

alias "+stats" "cl_hud_telemetry_frametime_show 2; cl_hud_telemetry_ping_show 2; cl_hud_telemetry_net_misdelivery_show 2; cl_hud_telemetry_net_detailed 2; cl_hud_telemetry_net_quality_graph_show 2"
alias "-stats" "cl_hud_telemetry_frametime_show 1; cl_hud_telemetry_ping_show 1; cl_hud_telemetry_net_misdelivery_show 1; cl_hud_telemetry_net_detailed 0; cl_hud_telemetry_net_quality_graph_show 0"
bind "j" "+stats"

On release everything goes back to the defaults: the graphs hide, and FPS, ping and loss come back only if they turn bad.

Telemetry With the Scoreboard (TAB)

My favorite variant. Every time you press TAB to check the score, telemetry shows up too. No extra key, and the stats become part of your normal routine, when you're not in a fight anyway.

alias "+stats" "+showscores; cl_hud_telemetry_frametime_show 2; cl_hud_telemetry_ping_show 2; cl_hud_telemetry_net_misdelivery_show 2; cl_hud_telemetry_net_detailed 2; cl_hud_telemetry_net_quality_graph_show 2"
alias "-stats" "-showscores; cl_hud_telemetry_frametime_show 1; cl_hud_telemetry_ping_show 1; cl_hud_telemetry_net_misdelivery_show 1; cl_hud_telemetry_net_detailed 0; cl_hud_telemetry_net_quality_graph_show 0"
bind "TAB" "+stats"

To get the normal scoreboard back: bind "TAB" "+showscores".

Toggle Telemetry With One Key

If you want telemetry on for a longer time, for example while you test a new router or graphics settings, a toggle is better: press once to turn it on, again to turn it off.

alias "telemetry" "stats_on"
alias "stats_on" "cl_hud_telemetry_frametime_show 2; cl_hud_telemetry_ping_show 2; cl_hud_telemetry_net_misdelivery_show 2; cl_hud_telemetry_net_detailed 2; cl_hud_telemetry_net_quality_graph_show 2; alias telemetry stats_off"
alias "stats_off" "cl_hud_telemetry_frametime_show 1; cl_hud_telemetry_ping_show 1; cl_hud_telemetry_net_misdelivery_show 1; cl_hud_telemetry_net_detailed 0; cl_hud_telemetry_net_quality_graph_show 0; alias telemetry stats_on"
bind "j" "telemetry"

The same thing can be written as one bind with toggle:

bind "j" "toggle cl_hud_telemetry_frametime_show 2 1; toggle cl_hud_telemetry_ping_show 2 1; toggle cl_hud_telemetry_net_misdelivery_show 2 1; toggle cl_hud_telemetry_net_detailed 2 0; toggle cl_hud_telemetry_net_quality_graph_show 2 0"

Alias vs Toggle

The alias version always sets exact values and stays in sync. toggle switches each setting based on its current value and prints a line in the console for every one. If one of them was changed somewhere else (in the settings menu, for example), the toggle gets out of sync: one graph turns on while another turns off. So for longer chains I use the alias version.

Add cl_showfps to Your Telemetry Script

CS2 still has the classic cl_showfps, a small FPS meter at the top of the screen. The game lists four modes:

Command What it shows
cl_showfps 0 Off (default)
cl_showfps 1 FPS
cl_showfps 2 Smoothed FPS with frame time
cl_showfps 3 Server timing in ms
cl_showfps 4 FPS plus a .csv log file, good for benchmarks

To add it to the toggle script, put cl_showfps 2 into the "on" part and cl_showfps 0 into the "off" part:

alias "telemetry" "stats_on"
alias "stats_on" "cl_hud_telemetry_frametime_show 2; cl_hud_telemetry_ping_show 2; cl_hud_telemetry_net_misdelivery_show 2; cl_hud_telemetry_net_detailed 2; cl_hud_telemetry_net_quality_graph_show 2; cl_showfps 2; alias telemetry stats_off"
alias "stats_off" "cl_hud_telemetry_frametime_show 1; cl_hud_telemetry_ping_show 1; cl_hud_telemetry_net_misdelivery_show 1; cl_hud_telemetry_net_detailed 0; cl_hud_telemetry_net_quality_graph_show 0; cl_showfps 0; alias telemetry stats_on"
bind "j" "telemetry"

Or the toggle version:

bind "j" "toggle cl_hud_telemetry_frametime_show 2 1; toggle cl_hud_telemetry_ping_show 2 1; toggle cl_hud_telemetry_net_misdelivery_show 2 1; toggle cl_hud_telemetry_net_detailed 2 0; toggle cl_hud_telemetry_net_quality_graph_show 2 0; toggle cl_showfps 2 0"

cl_showfps 4 writes the .csv log into ...\Counter-Strike Global Offensive\game\csgo\. Run the same map and route before and after a change and compare the files, that's an honest benchmark.

How to Create and Load CS2 Telemetry Scripts

You don't have to type the script into the console after every start. Save it in a .cfg file and run it by hand or automatically. These scripts only use normal console commands, so they are safe: VAC doesn't care about alias or toggle. Only some third-party leagues or servers may have their own rules about configs.

1. Create the .cfg File

  1. Open the CS2 cfg folder:
    ...\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg\
  2. Create a text file, for example telemetry.txt, paste the script and save.
  3. Rename it to telemetry.cfg . If you don't see extensions: File Explorer Options , View , uncheck Hide extensions for known file types .
Windows File Explorer Options with Hide extensions for known file types and a cfg file in the folder
How to show file extensions in Windows Explorer

2. Load It From the Console

  1. Turn on the console: Settings, Game, Enable Developer Console: Yes.
  2. Open it with ~ and type exec telemetry.
CS2 settings screen with Enable Developer Console
Enable the CS2 developer console

3. Run It on Every Start

Two ways. In Steam: right click Counter-Strike 2, Properties, Launch Options, add +exec telemetry. Or add exec telemetry to your autoexec.cfg in the same cfg folder.

Steam launch options for Counter-Strike 2 with a config file set to run
Launch options
File explorer showing the path to autoexec.cfg in Counter-Strike 2 under game, csgo, cfg
autoexec.cfg in game\csgo\cfg

Scripts can also live in a subfolder, for example cfg\myscripts\telemetry.cfg, loaded with exec myscripts/telemetry. More in my CS2 config guide and CS2 config location.

Tips for Using CS2 Telemetry

Not all the time

Every graph on screen looks cool but clutters the HUD. Show it with a key when you test or chase lag.

Keep the warnings

Leave FPS, ping and loss on 1 when the script is off. The game will tell you when something goes wrong.

FPS or network?

Smooth FPS but red spikes on the graph means network. Stutter with clean ping and graph means your PC.

Warning colors

Yellow or red spikes are loss or jitter. If you see them often, check the cable, router and ISP.

If telemetry keeps showing bad numbers, the next steps are in my guides on FPS drops and stutter and lowering ping in CS2.

Conclusion

Telemetry scripts make CS2's built-in diagnostics easy to use in a match. Instead of a cluttered HUD you call up FPS, ping and the network graphs when you need them: hold a key, press TAB, or toggle for a longer test. Add cl_showfps when you benchmark, and let the scripts fall back to the defaults so the game can still warn you about problems on its own.

CS2 Telemetry Scripts FAQ

Does net_graph work in CS2?

No, the command is gone. Telemetry replaced it: cl_hud_telemetry_* settings or Settings, Game, Telemetry.

How do I show telemetry only when I press TAB?

Use the TAB script from this guide: an alias that runs +showscores together with the telemetry commands.

Why does the script return to 1 and not 0?

1 is the default: FPS, ping and loss appear only when they get bad. With 0 you lose those automatic warnings.

What's the difference between alias and toggle?

An alias sets exact values and stays in sync. toggle flips each setting from its current value, prints to the console and can get out of sync.

Where do I put the telemetry script?

In ...\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg\, then load it with exec telemetry.

My telemetry doesn't show, what's wrong?

Check that the script ran (exec telemetry), that the values are 2 while you hold the key, and that another bind doesn't use the same key.

Can I get banned for telemetry scripts?

No. They only use normal console commands, VAC doesn't care about alias or toggle.

Does telemetry cost FPS?

A little, if every graph is always on. The bigger reason to hide it is a clean HUD, that's what the scripts are for.

Continue Reading

Leave a Reply

Your email address will not be published. Required fields are marked *