Skip to content

How to install SourceMod plugins on your Counter-Strike: Source server

Install, enable, disable and troubleshoot SourceMod plugins and extensions on Counter-Strike: Source.

Updated August 07, 2026
Counter-Strike: Source

Plugins are the reason most people still run a Counter-Strike: Source server. Because CS:S is a Source 1 game, SourceMod runs on it natively, and two decades of community plugins run on SourceMod.

This guide covers the directory layout, enabling the plugins SourceMod already ships, installing new ones, and diagnosing the ones that refuse to load.

You need SourceMod installed first — see How to add admins to a Counter-Strike: Source server with SourceMod.

Where do SourceMod plugins go?

Everything below lives under cstrike/addons/sourcemod/.

Directory What it holds
plugins All .smx files here load automatically when SourceMod starts
plugins/disabled Plugins here are not loaded — this is how you disable one
configs Configuration files for SourceMod and its plugins
extensions Extensions, which are more powerful than plugins and load only when required
gamedata Offsets and signatures the engine needs; SourceMod auto-updates these
translations Translation files, which some plugins require you to copy in
scripting Plugin source (.sp) and the compiler — not needed to run anything
logs Where errors go, and the first place to look when something breaks
data Internal plugin data
bin SourceMod's own binaries — leave alone

The short version: .smx files go in plugins. Plugins are also reloaded on map change if their file has changed.

Install the .sp alongside the .smx

You do not need the source file for a plugin to run, but AlliedModders recommend installing both. When a plugin breaks after a game update, having the source on the server is the difference between recompiling it and waiting for the author.

Which plugins does SourceMod already include?

A good number of the things people go looking for are already installed. These load by default:

Plugin Purpose
admin-flatfile Loads admins from the admin config files
adminmenu Provides the admin menu API and core features
adminhelp Provides sm_help
basebans Basic banning commands and menu options
basecommands Map changing, kicking, cvar changing
basechat Say-chat, centre-say and private message commands
basecomm Gag and mute controls
basetriggers Automated replies to "nextmap", "thetime" and "timeleft"
basevotes Basic voting commands
playercommands sm_slap, sm_slay and sm_rename
funcommands Fun commands such as slapping and beacons
funvotes Votes based on the fun commands
antiflood Prevents chat spam
nextmap Alters and reports the effective map cycle
reservedslots Reserved slots for admins and privileged players
clientprefs Client settings interface (sm_cookies, sm_settings)
sounds Adds sm_play

And these ship disabled, in plugins/disabled, waiting to be moved out:

Plugin Purpose
mapchooser Automated end-of-map map voting. Disable randomcycle if you use it
randomcycle Randomises the map cycle. Disable mapchooser if you use it
rockthevote Player-initiated map votes
admin-sql-prefetch Loads admins from SQL in bulk each map change
admin-sql-threaded Loads admins from SQL as each admin connects

The two SQL admin plugins are mutually exclusive

If you enable admin-sql-prefetch, admin-sql-threaded must be disabled, and vice versa. The same either/or applies to mapchooser and randomcycle — they both want to decide the next map.

How do I enable a plugin that came with SourceMod?

Using mapchooser as the example:

  1. Copy plugins/disabled/mapchooser.smx to plugins/mapchooser.smx.
  2. Either run sm plugins load mapchooser in the server console, or change the map.
  3. Confirm it worked with sm plugins list.

If the plugin has cvars, loading it once generates its config file in cfg/sourcemod. That generated file is where you change its settings — not the plugin itself.

How do I install a new SourceMod plugin?

For a simple plugin that ships a binary and its source:

  1. Copy the .smx file into addons/sourcemod/plugins.
  2. Copy the .sp file into addons/sourcemod/scripting.
  3. Change the map, or run sm plugins load <name>.
  4. Confirm with sm plugins list.

More complex plugins also ship translations or gamedata. Well-packaged ones give you a zip whose folder structure already matches SourceMod's, so you can copy the whole thing into the sourcemod folder and let the paths line up.

Always follow the plugin's own instructions

This is AlliedModders' own advice and it is worth repeating. Plugins vary in what they need — translations, gamedata, a required extension, a config file. The plugin's release thread is authoritative for that plugin; this guide is only authoritative for the mechanism.

Dependencies

Plugins depending on other plugins is rare. Plugins depending on an extension is common — extensions provide capabilities plugins cannot otherwise reach. Any dependency has to be noted in the plugin's description, so read it before assuming a failed load is a bug.

Which console commands manage plugins?

Run these in the server console, or through your panel's Console tab.

Command What it does
sm version Prints the SourceMod version
sm plugins list Lists loaded plugins
sm plugins load <name> Loads a plugin
sm plugins unload <name> Unloads a plugin
sm plugins reload <id> Reloads a plugin by list ID
sm plugins refresh Refreshes the plugin list from disk
sm plugins info <id> Shows detail for one plugin, including why it failed
sm exts list Lists extensions
sm exts load <name> Loads an extension

Why is my plugin not loading?

Change the map after installing, then run sm plugins list in the server console. SourceMod is a server-side addon, so the client console will not tell you anything useful here.

If the plugin is not listed at all, it is not installed correctly — the compiled .smx is not in the plugins directory.

If it is listed with a <Failed> prefix, run sm plugins info <plugin id> using the number from the list. AlliedModders document the common causes:

Error Cause
Could not find translation file Translation files were not uploaded, or went to the wrong directory
Native 'xyz' was not found or Required extension "xyz" file("xyz.ext") not running A required extension is missing or out of date. Check sm exts list against the current version on AlliedModders
Wrong game The plugin targets a different game. Disable it to clear the error

The logs directory holds the full picture. When asking for help, copy the actual log lines rather than your interpretation of them.

How do I install an extension?

Extensions install like plugins — copy the file into addons/sourcemod/extensions. They may also need gamedata and translations.

The wrinkle is filenames. Some extensions ship one build for every Source game. Others ship one per engine, named [extension].ext.[Metamod API version].[engine string].[extension].

For Counter-Strike: Source the engine string is ep2v. CS:S shares that Source 2009 build with Team Fortress 2, Day of Defeat: Source, Half-Life 2: Deathmatch and Garry's Mod. So the SDKTools build you want on CS:S is sdktools.ext.2.ep2v.dll on Windows, or the matching .so on Linux — not ep2, and not the plain sdktools.ext.dll.

Extensions load only when a plugin requires them, so an unused extension will not appear in sm exts list at all. To force one to always load, create an empty file next to it named after the extension with an .autoload suffix:

extensions/sdkhooks.ext.2.ep2v.dll      <- the extension
extensions/sdkhooks.autoload            <- empty file, forces it to load
Forcing an extension to load

Never overwrite a running extension

You cannot update an extension while it is loaded. Unload it first with sm unload <extensionname>, or stop the server. Overwriting a live extension will most likely crash a Linux server, and on Windows the file will simply be locked.

FAQ

Where do I put .smx files on a Counter-Strike: Source server?

cstrike/addons/sourcemod/plugins. Every .smx in that directory loads automatically when SourceMod starts, and reloads on map change if the file has changed.

How do I disable a SourceMod plugin without deleting it?

Move it into addons/sourcemod/plugins/disabled. Plugins in that sub-folder are not loaded. Moving it back out re-enables it. This is also how the bundled extras such as mapchooser and rockthevote ship.

How do I check whether a plugin installed correctly?

Change the map, then run sm plugins list in the server console. Not listed means it is not installed in the right place. Listed with <Failed> means it loaded and errored — run sm plugins info <id> for the reason.

Which SourceMod extension build does Counter-Strike: Source need?

The ep2v build, which is the Source 2009 engine shared with TF2, Day of Defeat: Source and Half-Life 2: Deathmatch. Picking ep2 or a generic build instead is a common cause of Native 'xyz' was not found errors.

Can I install plugins without restarting the server?

Yes. sm plugins load <name> loads a newly copied plugin immediately, and a map change picks up anything new or modified. Extensions are the exception — you cannot replace one that is currently loaded.

Do SourceMod plugins work on Counter-Strike 2?

No. SourceMod does not run on Counter-Strike 2 at all — AlliedModders list it as Unsupported — so no SourceMod plugin, bundled or community, applies there. This is a genuine reason communities keep running Counter-Strike: Source. If you want a server where this ecosystem works, that is Counter-Strike: Source server hosting.

Where do plugin config files appear?

In cfg/sourcemod, generated the first time a plugin with cvars is loaded. Edit the generated file rather than looking for settings inside the plugin.


Made with 💜 by GameServerKings

Need a Counter-Strike: Source server?

Deploy an instantly-provisioned Counter-Strike: Source server on high-clock hardware — DDoS protected, no contracts, cancel anytime.

From $4.50 /month