Weaviate's query profiling feature provides per-stage, per-shard timing breakdowns for slow queries without requiring environment variable changes or node restarts. Unlike the existing slow query log, profiling is an opt-in per-query flag that returns timing data inline on the response, aggregated across all shards in the cluster. The post explains how to enable it in Python, JS/TS, Java, and C# clients, and walks through reading key metrics: objects_took (disk-bound hydration), filters_build_allow_list_took (filter cardinality cost), vector_search_took with per-HNSW-layer breakdowns, knn_search_rescore_took (compression rescore disk latency), and BM25-specific kwd_* timers. Three worked examples illustrate diagnosing hydration-dominated queries, overly broad filters, and compressed index rescore bottlenecks. Available since v1.36.9, GA in v1.38.