How to install SourceMod plugins on your Counter-Strike: Source server
Install, enable, disable and troubleshoot SourceMod plugins and extensions on 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
.spalongside the.smxYou 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-threadedmust be disabled, and vice versa. The same either/or applies tomapchooserandrandomcycle— they both want to decide the next map.
How do I enable a plugin that came with SourceMod?
Using mapchooser as the example:
- Copy
plugins/disabled/mapchooser.smxtoplugins/mapchooser.smx. - Either run
sm plugins load mapchooserin the server console, or change the map. - 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:
- Copy the
.smxfile intoaddons/sourcemod/plugins. - Copy the
.spfile intoaddons/sourcemod/scripting. - Change the map, or run
sm plugins load <name>. - 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 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.
What to read next
- Getting started with your Counter-Strike: Source server — first boot, ports and connecting
- Counter-Strike: Source server.cfg configuration — where each config file lives and what executes when
- How to add admins to a Counter-Strike: Source server with SourceMod — admin flags, immunity and the full command set
- How to add and rotate maps on a Counter-Strike: Source server — map cycles, FastDL and map voting
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