Hello Codeforces!
I wanted to share a tool I’ve been building for competitive programming:
CP Tool is a free web app that runs directly in the browser. There is no login, no setup, and no backend server needed for the actual tools. Just open the site and use it.
What it currently includes:
- Interactive graph editor
- Graph parsing from common input formats
- Algorithm visualization/playback for things like BFS, Dijkstra, MST, SCC, topological sort, bridges/articulation points, tree diameter, LCA, subtree size, etc.
- CP calculators for number theory, combinatorics, bit operations, matrices, and strings String algorithm helpers like KMP, Z-function, rolling hash, Manacher, trie, Aho-Corasick, suffix array, and suffix automaton
- Grid/coordinate helper for geometry-style and compressed-grid problems
- Curated CP resources: platforms, practice ladders, references, tools, and communities
- Documentation inside the app
The idea is not to replace your editor or online judge. It is more of a small workbench for understanding, debugging, and visualizing ideas while practicing or upsolving.
Some use cases:
- Paste a graph and quickly check how an algorithm behaves
- Visualize graph traversal or shortest paths
- Test small number theory / combinatorics values
- Inspect string algorithm outputs without writing a quick script every time
- Draw or reason about grid/coordinate inputs
- Keep useful CP links in one place
I would really appreciate feedback from the community, especially on:
- Which algorithms would be most useful to add next?
- Which graph input formats should be supported?
- What calculators or visualizers do you usually wish existed during practice?
- Any UI/UX issues you notice while using it? Link again:
Thanks, and I hope it helps someone during practice or upsolving.








The tunisian pride!
Looks pretty cool. Great idea and great job.
Very useful tool! Thanks for this great contribution!
Actually this is pretty cool! Just maybe the grid part is inverted upside down and not all points all visible if coordinate magnitude increases. Rest all is awesome! Thanks :)
I added coordinate compression for the points that it can help a bit , but I don't see how I can do it to display all of them in a clear way
Nice tool! Thanks
I've been using cp-tool for almost 2 years now, it helped me a lot. Nice to see how much it improved. Good contribution Mtaylor!
Number of divisors of 1000000000000000000 : 361it took more than 5 seconds to calculate... wtf
Lets see how long it needs for you.
Same as
Prime factors of 1000000000000000000i.e. instantlyMaybe you can take some inspiration from my tool for number theory calculations: https://wery0.github.io/Daily-CP-tools/
Thanks that looks very good I will add it to the list of resources too
Your tool works so fast, how it's possible? For example, is_prime function
For big numbers
is_prime()function uses BPSW test which works in about $$$O(\log^3(n))$$$ and has no known counterexamples.https://docs.sympy.org/latest/modules/ntheory.html#sympy.ntheory.primetest.isprime
great tool, though i have found a slight problem. In the tools calculator part you cannot reach eular phi directly you have to gradually go down and after a point you will eventually reach SQRT and then you can select euler phi but have to do so in a split second.
Proof (expires in 2 days)
Thanks for the feedback , I will fix it
I really really liked it.
good job bro
Regarding the graph editor, the app only allows me to move some nodes of the graph (these light up in blue when I hover the mouse over them). The others don't light up and therefore cannot be moved freely, while the rest of the graph remains fixed. This problem persists even after changing the display type. (I use brave browser. I don't know if that might be an issue)
Despite this, I think the app can be very useful. Congratulations!