Sphere Engine alternative
Sphere Engine alternative: public prices, a free tier and built-in judging
Sphere Engine, from the company behind Ideone and SPOJ, has judged code for assessment and e-learning platforms for over a decade, with stored problems, custom checkers and a problem widget. It is sold only by quote, after a 14-day trial. Here's how it compares with OnlineCompiler.io, when to stay, and how to move a Sphere Engine call if switching fits.
By the OnlineCompiler.io team. Updated . We make OnlineCompiler.io, so we're one of the options here. Every competitor figure links to the vendor's own page, and we say where our API falls short.
The short answer
- Stay with Sphere Engine if you need problems and test cases stored with the provider, a problem widget for your students, custom checker programs, interactive problems, several files per program, preinstalled scientific Python, image output, more than 512 MB of memory, or test files over 100 KB. Also if procurement wants a written SLA, 24/7 support, reserved capacity for exam days, an on-premise install or quarterly invoices. We don't offer any of those yet.
- Switch to OnlineCompiler.io if you want to start without a sales call: published prices, 100,000 free runs a month and an API key in a minute. Also if you want one call that returns the output, test-case judging with weighted scoring and a float tolerance you choose, runtimes about two years newer, Judge0- and Piston-compatible endpoints, an MCP server for AI agents, or a sandbox you can read about.
Sphere Engine also sells Containers, which runs whole projects in your own Docker images and opens browser workspaces. We have nothing like it; this page compares the Compilers and Problems modules.
Price
Sphere Engine has published no prices since 2018. After a 14-day trial it quotes from the project's scope, the number of students or candidates, expected submissions and the support level, and bills quarterly or annually. Its last public list, from 2017, charged $249 a month for 30,000 runs.
Ours are on the pricing page: 100,000 runs a month free, then Starter at $10 for 150k, Pro at $49 for 1M and Business at $199 for 4M, billed monthly. A judged test counts as one run.
Running code: Sphere Engine Compilers
| Feature | Sphere Engine Compilers | OnlineCompiler.io |
|---|---|---|
| Getting a result | Create a submission, poll every 2 s while it is executing, then fetch each stream from its own URL (API v4) | One call to /api/run-code-sync/, or async with the result POSTed to your callback URL |
| Authentication | access_token in the URL, including the stream URLs it returns | API key in the Authorization header |
| Time limit | timeLimit, default 5 s, from 1 to 15 s; compiling not included (FAQ) | time_limit up to 30 s; compiling not included, but compile and run share a 30-second ceiling |
| Memory | 1.5 GB | 512 MB |
| CPU | One dedicated core, sold for timing accuracy (comparison) | 2 CPU cores |
| Network in the program | Off by default | Always off |
| Code and input size | 64 kB each | 100 KB each |
| Output kept | 1 MB per stream | 64 KB per stream, with truncated when cut |
| Several files | Yes, a tar.gz or files[], in 29 languages (docs) | No, one file |
| Command-line arguments | No | No |
| Preinstalled libraries | Yes: numpy, pandas, scipy, matplotlib and tensorflow for Python (list), JUnit and Guava for Java | Standard library only |
| Images and output files | Yes (images) | Text only |
| Languages | About 56, with several versions each | 45 (list), one current version each |
| Results pushed to you | One webhook URL per account; status without the output; signed, and retried for over two days (webhooks) | A callback URL per API key with the full result and your extra_params; not signed |
| Published rate limits | None; polling too fast may get you blocked | GET /api/limits/ and GET /api/usage/ |
| Sandbox | Not disclosed | A fresh gVisor sandbox per run, no network |
| Other APIs on the same key | None | Judge0- and Piston-compatible endpoints |
| AI agents (MCP) | None | Live at https://api.onlinecompiler.io/mcp (setup) |
| Embeds | A widget created in the dashboard, identified by a hash (quickstart) | A script tag or iframe, no dashboard setup |
| Run history kept | One month by default | While your account is active (privacy) |
Judging: Sphere Engine Problems
Problems is Sphere Engine's judge: you store a problem with its test cases, then submit code against it. Ours
works the other way around: POST /api/run-tests/ takes the code and
the tests in one request, so there is nothing to set up first and your tests stay in your own database.
curl -X POST https://api.onlinecompiler.io/api/run-tests/ \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"compiler": "python-3.14",
"code": "a, b = map(int, input().split())\nprint(a + b)",
"tests": [
{"input": "1 2\n", "expected_output": "3\n"},
{"input": "-4 10\n", "expected_output": "6\n", "hidden": true}
],
"scoring": "percent"
}'| Feature | Sphere Engine Problems | OnlineCompiler.io run-tests |
|---|---|---|
| Where tests live | Stored with the problem, through an API or a web editor (API v4) | Sent with each request |
| Tests | 16 per problem by default, more on request; up to 20 MB per file (FAQ) | Up to 8 on Free, 20 on Starter, 40 on Pro and 80 on Business per request, within a 60-second budget; up to 100 KB of input per test and 1 MB of tests per request |
| Compiling | Once per submission (execution modes) | Once per request for C, C++ and Java when the tests need more than one batch; otherwise again for every test, so slow-compiling languages fit fewer tests (details) |
| Time limit | Per test, default 1 s, up to 60 s; compiling not included | One for the request, default 2 s, up to 30 s; compiling not included |
| Built-in checkers | Exact, ignore extra whitespace, float with a tolerance of 0.01 or 0.000001, and score by source length (judges) | trim, exact, tokens, and float with any tolerance from 0 to 1 |
| Custom checker programs | Yes, in any supported language (custom judges) | No |
| Scoring | All tests must pass, or percent passed; weights need a custom master judge | all_or_nothing, percent or weighted, built in |
| Hidden tests | Per-test results hidden from widget users by default | hidden: true returns only the verdict, and compiler output from a compile that saw a hidden test's input is never shown |
| Output per test | 5 kB of stdout and 1 kB of stderr stored | Compared up to 64 KB; the first 4,096 characters returned for visible tests |
| Verdicts | Accepted, wrong answer, time and memory limit, compilation and runtime error, illegal system call, judge and problem errors (statuses) | Accepted, wrong answer, time, memory and output limit, compilation and runtime error, internal error, plus skipped and incomplete |
| Interactive problems | Yes (docs) | No |
| Problem widget | Yes: statement, editor, history and rankings (widget) | No; our widget runs code without judging it |
| Cost of a judged test | Drawn from a quoted submission pool | One run at published prices |
Each run is stateless and nothing is stored with us but your run history, so a problem bank, a submissions table and a leaderboard stay in your own database. How to build an online judge walks through the rest.
Language versions
Sphere Engine keeps several versions of each language, chosen with compilerVersionId; we run one
current version per compiler id. Its newest versions came out in mid-2024 or earlier, and its C# and
Visual Basic run on .NET 6, which Microsoft stopped supporting in November 2024.
Sphere Engine's newest version (languages page, 18 Oct 2026):
| Language | Sphere Engine newest | Our compiler | Our version |
|---|---|---|---|
| Python | 3.12 | python-3.14 | 3.14 |
| C | GCC 13.2 | gcc-15 | GCC 15 |
| C++ | GCC 13.2 | g++-15 | G++ 15 |
| Java | 22 | openjdk-25 | OpenJDK 25 |
| JavaScript | Node.js 20.14.0 | nodejs-24 | Node.js 24 |
| Go | 1.22.4 | go-1.26 | 1.26 |
| Rust | 1.79 | rust-1.93 | 1.93 |
| Ruby | 3.1.0 | ruby-4.0 | 4.0 |
| C# | .NET 6 | dotnet-csharp-10 | .NET SDK 10 |
| Visual Basic | .NET 6 | dotnet-vbnet-10 | .NET SDK 10 |
Sphere Engine runs about eleven languages we don't, nearly all older or esoteric ones such as AWK, Forth, Raku, Sed, Smalltalk and Tcl. We run Crystal, FreeBASIC, Nim, PowerShell and Zig, which it doesn't.
Moving a Sphere Engine call
A Sphere Engine Compilers call is three steps: create, poll, then fetch the output. Ours is one synchronous call, or an async one that posts the result to your callback URL. Keep the API key on your server, as you did with the access token.
# 1. Create the submission. The token goes in the URL.
curl -X POST "https://YOUR_ID.compilers.sphere-engine.com/api/v4/submissions?access_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"compilerId": 116, "source": "print(input()[::-1])", "input": "sphere"}'
# 2. Every 2 seconds, until "executing" is false:
curl "https://YOUR_ID.compilers.sphere-engine.com/api/v4/submissions/SUBMISSION_ID?access_token=YOUR_TOKEN"
# 3. Fetch each stream you need on its own:
curl "https://YOUR_ID.compilers.sphere-engine.com/api/v4/submissions/SUBMISSION_ID/output?access_token=YOUR_TOKEN"curl -X POST https://api.onlinecompiler.io/api/run-code-sync/ \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"compiler": "python-3.14",
"code": "print(input()[::-1])",
"input": "sphere"
}'| Sphere Engine | OnlineCompiler.io |
|---|---|
access_token in the URL | Authorization: YOUR_API_KEY header, free to create |
source | code |
compilerId + compilerVersionId | compiler, a string such as python-3.14 (list) |
input | input |
timeLimit | time_limit, in seconds; it may be a fraction |
files | Not supported |
Polling while executing | None: the response is the result |
result.status.code | status and exit_code; 124 means the run went over time_limit (exit codes) |
output stream | output |
error and cmpinfo streams | error, which holds stderr and compiler messages together |
result.time, result.memory | time (seconds) and memory (KB), as strings |
| 402 when the submission pool is empty | 429 when an account or key limit is reached, with the reason in error |
For Problems, send each problem's tests with the submission to /api/run-tests/,
as in the judging example above. For more options, see the wider comparison of code execution APIs.
Frequently asked questions
How much does Sphere Engine cost?
Sphere Engine publishes no prices. It offers a 14-day trial without a card, then a quote based on the project, the number of students or candidates, expected submissions and the support level, billed quarterly or annually. Its last public price list, from 2017, charged $249 a month for 30,000 runs.
Does Sphere Engine have a free plan?
No. It has a 14-day trial and sends free users to Ideone and SPOJ, its free sites. OnlineCompiler.io's free plan includes 100,000 runs a month, allows commercial use and needs no credit card.
Can OnlineCompiler.io replace Sphere Engine Problems?
For judging a submission against tests you send with the request, yes: POST /api/run-tests/ returns a verdict for each test, an overall verdict and a score, with hidden tests, four checkers and weighted scoring. It does not store problems, run custom checker programs, judge interactive problems or provide a problem widget, and most languages compile the program again in every test, so slow-compiling ones fit fewer tests in one request.
Is OnlineCompiler.io compatible with Sphere Engine's API?
No. It has its own API plus Judge0- and Piston-compatible endpoints. Moving a Sphere Engine Compilers call means renaming a few fields and dropping the polling, as the table on this page shows.
Which runs newer language versions?
OnlineCompiler.io, by about two years on most languages. On 18 October 2026 Sphere Engine's newest versions were Python 3.12, GCC 13.2, Java 22 and Go 1.22.4, and it ran C# and Visual Basic on .NET 6, which Microsoft stopped supporting in November 2024.
Can I use both?
Yes. Keep stored problems, custom checkers and interactive problems on Sphere Engine, and send plain runs and test-case judging to OnlineCompiler.io. Both are HTTP APIs, so a small router in your backend is enough.