diff --git a/internal/godoc/dochtml/internal/render/linkify.go b/internal/godoc/dochtml/internal/render/linkify.go
index bce2a87..9db49da 100644
--- a/internal/godoc/dochtml/internal/render/linkify.go
+++ b/internal/godoc/dochtml/internal/render/linkify.go
@@ -58,10 +58,9 @@
 )
 
 type docData struct {
-	Elements          []docElement
-	Headings          []docElement
-	DisablePermalinks bool
-	EnableCommandTOC  bool
+	Elements         []docElement
+	Headings         []docElement
+	EnableCommandTOC bool
 }
 
 type docElement struct {
@@ -119,10 +118,9 @@
 			}
 		}
 		out.Doc = ExecuteToHTML(r.docTmpl, docData{
-			Elements:          els,
-			Headings:          headings,
-			DisablePermalinks: r.disablePermalinks,
-			EnableCommandTOC:  r.enableCommandTOC,
+			Elements:         els,
+			Headings:         headings,
+			EnableCommandTOC: r.enableCommandTOC,
 		})
 	}
 	if decl != nil {
diff --git a/internal/godoc/dochtml/internal/render/render.go b/internal/godoc/dochtml/internal/render/render.go
index c1f1138..0378b31 100644
--- a/internal/godoc/dochtml/internal/render/render.go
+++ b/internal/godoc/dochtml/internal/render/render.go
@@ -26,15 +26,14 @@
 )
 
 type Renderer struct {
-	fset              *token.FileSet
-	pids              *packageIDs
-	packageURL        func(string) string
-	disablePermalinks bool
-	enableCommandTOC  bool
-	ctx               context.Context
-	docTmpl           *template.Template
-	exampleTmpl       *template.Template
-	links             []Link // Links removed from package overview to be displayed elsewhere.
+	fset             *token.FileSet
+	pids             *packageIDs
+	packageURL       func(string) string
+	enableCommandTOC bool
+	ctx              context.Context
+	docTmpl          *template.Template
+	exampleTmpl      *template.Template
+	links            []Link // Links removed from package overview to be displayed elsewhere.
 }
 
 type Options struct {
@@ -51,11 +50,6 @@
 	// Only relevant for HTML formatting.
 	PackageURL func(pkgPath string) (url string)
 
-	// DisablePermalinks turns off inserting of '¶' permalinks in headings.
-	//
-	// Only relevant for HTML formatting.
-	DisablePermalinks bool
-
 	// EnableCommandTOC turns on the table of contents for the overview section
 	// of command pages.
 	//
@@ -78,9 +72,7 @@
 {{- end -}}
 {{- range .Elements -}}
   {{- if .IsHeading -}}
-    <h4 id="{{.ID}}">{{.Title}}
-    {{- if not $.DisablePermalinks}} <a class="Documentation-idLink" href="#{{.ID}}">¶</a>{{end -}}
-    </h4>
+    <h4 id="{{.ID}}">{{.Title}} <a class="Documentation-idLink" href="#{{.ID}}">¶</a></h4>
   {{- else if .IsPreformat -}}
     <pre>{{.Body}}</pre>
   {{- else -}}
@@ -100,7 +92,6 @@
 func New(ctx context.Context, fset *token.FileSet, pkg *doc.Package, opts *Options) *Renderer {
 	var others []*doc.Package
 	var packageURL func(string) string
-	var disablePermalinks bool
 	var enableCommandTOC bool
 	if opts != nil {
 		if len(opts.RelatedPackages) > 0 {
@@ -109,20 +100,18 @@
 		if opts.PackageURL != nil {
 			packageURL = opts.PackageURL
 		}
-		disablePermalinks = opts.DisablePermalinks
 		enableCommandTOC = opts.EnableCommandTOC
 	}
 	pids := newPackageIDs(pkg, others...)
 
 	return &Renderer{
-		fset:              fset,
-		pids:              pids,
-		packageURL:        packageURL,
-		disablePermalinks: disablePermalinks,
-		enableCommandTOC:  enableCommandTOC,
-		docTmpl:           docDataTmpl,
-		exampleTmpl:       exampleTmpl,
-		ctx:               ctx,
+		fset:             fset,
+		pids:             pids,
+		packageURL:       packageURL,
+		enableCommandTOC: enableCommandTOC,
+		docTmpl:          docDataTmpl,
+		exampleTmpl:      exampleTmpl,
+		ctx:              ctx,
 	}
 }
 
