Skip to content

FiveM Server Artifacts

Which FXServer build should you run? The recommended artifact, every build with known issues and direct downloads for Windows and Linux.

Recommended artifact

How the recommendation works

A new artifact is not recommended straight away. It waits a short period so server owners have time to report problems. The recommended artifact is the newest one that has cleared that window with no reported issues.

No reported issues

Artifact data from the open sourceFiveM Artifacts DB by JG Scripts. Build list from the citizenfx/fivem GitHub tags.

Free JSON API

Use the data in your own tools

No key, no signup, CORS enabled. Base URL https://artifacts.jgscripts.com

Recommended artifact, Windows and Linux download links and every known broken artifact.

{
  "recommendedArtifact": "35945",
  "windowsDownloadLink": "https://runtime.fivem.net/artifacts/fivem/build_server_windows/master/35945-…/server.zip",
  "linuxDownloadLink": "https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/35945-…/fx.tar.xz",
  "brokenArtifacts": [
    { "artifact": "12078-12083", "reason": "Some clients will fail to connect…" }
  ]
}

Check one artifact number. Returns OK, or BROKEN with the reason.

{ "status": "BROKEN", "reason": "voip-server-mumble.dll server crash (citizenfx/fivem#3054)" }
Self check

Let your server check itself

Drop this into any server script. On start it reads the running build from the version convar, asks the API about it and prints a warning in the console if the build has known issues.

Updating artifacts

Stop the server, replace the contents of your artifacts folder (not your server-data) with the new download, then start it again. The update guide above walks through it step by step.

Found a bad build?

Report it on the report form or open an issue on GitHub so every server owner is warned.

server/artifact_check.lua
-- server.lua: warn in the console when this server runs a broken artifact.
CreateThread(function()
    local build = GetConvar('version', ''):match('v1%.0%.0%.(%d+)')
    if not build then return end

    PerformHttpRequest('https://artifacts.jgscripts.com/check?artifact=' .. build, function(code, body)
        if code ~= 200 or not body then return end
        local data = json.decode(body)
        if data and data.status == 'BROKEN' then
            print(('^1[artifacts] Build %s has known issues: %s^0'):format(build, data.reason or 'unknown'))
            print('^3[artifacts] Recommended build: https://fivemad.com/artifacts^0')
        else
            print(('^2[artifacts] Build %s has no reported issues.^0'):format(build))
        end
    end, 'GET')
end)