gin-contrib/pprof

gin pprof middleware

Go

725

131 commits

updated Oct 3, 2026

See the code

README

pprof

Run Tests Trivy Security Scan codecov Go Reference

gin pprof middleware

Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.

Usage

Start using it

Download and install it:

go get github.com/gin-contrib/pprof

Import it in your code:

import "github.com/gin-contrib/pprof"

Example

package main

import (
  "github.com/gin-contrib/pprof"
  "github.com/gin-gonic/gin"
)

func main() {
  router := gin.Default()
  pprof.Register(router)
  router.Run(":8080")
}

change default path prefix

func main() {
  router := gin.Default()
  // default is "debug/pprof"
  pprof.Register(router, "dev/pprof")
  router.Run(":8080")
}

custom router group

package main

import (
  "net/http"

  "github.com/gin-contrib/pprof"
  "github.com/gin-gonic/gin"
)

func main() {
  router := gin.Default()
  debugGroup := router.Group("/debug", func(c *gin.Context) {
    if c.Request.Header.Get("Authorization") != "foobar" {
      c.AbortWithStatus(http.StatusForbidden)
      return
    }
    c.Next()
  })
  pprof.RouteRegister(debugGroup, "pprof")
  router.Run(":8080")
}

Use the pprof tool

Then use the pprof tool to look at the heap profile:

go tool pprof http://localhost:8080/debug/pprof/heap

Or to look at a 30-second CPU profile:

go tool pprof http://localhost:8080/debug/pprof/profile?seconds=30

Or to look at the goroutine blocking profile, after calling runtime.SetBlockProfileRate in your program:

go tool pprof http://localhost:8080/debug/pprof/block

Or to collect a 5-second execution trace:

wget http://localhost:8080/debug/pprof/trace?seconds=5

Download the pprof profile data:

curl -v -H "Authorization: foobar" -o profile.pb.gz \
  http://localhost:8080/debug/pprof/profile?seconds=60
go tool pprof -http=:8099 profile.pb.gz
gin-gonic
gin-middleware
pprof

gin-contrib/pprof

gin pprof middleware

Go

725

131 commits

updated Oct 3, 2026

See the code

README

pprof

Run Tests Trivy Security Scan codecov Go Reference

gin pprof middleware

Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.

Usage

Start using it

Download and install it:

go get github.com/gin-contrib/pprof

Import it in your code:

import "github.com/gin-contrib/pprof"

Example

package main

import (
  "github.com/gin-contrib/pprof"
  "github.com/gin-gonic/gin"
)

func main() {
  router := gin.Default()
  pprof.Register(router)
  router.Run(":8080")
}

change default path prefix

func main() {
  router := gin.Default()
  // default is "debug/pprof"
  pprof.Register(router, "dev/pprof")
  router.Run(":8080")
}

custom router group

package main

import (
  "net/http"

  "github.com/gin-contrib/pprof"
  "github.com/gin-gonic/gin"
)

func main() {
  router := gin.Default()
  debugGroup := router.Group("/debug", func(c *gin.Context) {
    if c.Request.Header.Get("Authorization") != "foobar" {
      c.AbortWithStatus(http.StatusForbidden)
      return
    }
    c.Next()
  })
  pprof.RouteRegister(debugGroup, "pprof")
  router.Run(":8080")
}

Use the pprof tool

Then use the pprof tool to look at the heap profile:

go tool pprof http://localhost:8080/debug/pprof/heap

Or to look at a 30-second CPU profile:

go tool pprof http://localhost:8080/debug/pprof/profile?seconds=30

Or to look at the goroutine blocking profile, after calling runtime.SetBlockProfileRate in your program:

go tool pprof http://localhost:8080/debug/pprof/block

Or to collect a 5-second execution trace:

wget http://localhost:8080/debug/pprof/trace?seconds=5

Download the pprof profile data:

curl -v -H "Authorization: foobar" -o profile.pb.gz \
  http://localhost:8080/debug/pprof/profile?seconds=60
go tool pprof -http=:8099 profile.pb.gz
gin-gonic
gin-middleware
pprof

Project health

Overall

4.5/10

Maintained

6/10

Code review

0/10
OpenSSF Scorecard

Latest release

v1.5.6 · Sep 21, 2026

Releases this year

3

Significant stargazers

tutu

33 followers · starred Jun 2023

CaiCandong

21 followers · starred Aug 2024