Been using django-silk on a few projects and it’s genuinely useful, but I kept
hitting small frustrations with the UI. You can only filter by one method or
status code at a time. Pagination is just a query slice so you can’t jump to
page 3. Sharing a URL with a colleague means they see a completely different
sort order.
None of these are deal-breakers but they add up when you’re already frustrated
debugging a slow endpoint.
I ended up rebuilding the UI as a fork called django-silky.
The thing I’m most happy with is the N+1 detection. Silk already records every
SQL query per request, so I added a fingerprinting pass that strips literal
values and flags requests where the same structural query fires 3+ times. On
the SQL tab you get an expandable orange banner showing the query pattern, a
repeated count badge, and total ms cost. The offending rows are highlighted in
the query table below. There’s also a “N+1 only” toggle in the filter bar to
isolate just those requests across the board.
The analytics dashboard got a proper rebuild too. Request activity timeline,
status code donut, HTTP method breakdown, response time histogram, and latency
percentile curves for both request time and SQL query time.
The rest is smaller papercuts: inline filter bar instead of the drawer,
multi-select for method/status/path with active chips, real Django Paginator,
dark mode, Lucide icons bundled locally.
Same app label, same schema, same migrations as upstream:
pip uninstall django-silk
pip install django-silky
GitHub: GitHub - VaishnavGhenge/django-silky: Silky smooth profiling for Django · GitHub
Happy to hear if anything behaves differently from upstream - that would be
a bug.
