diff --git a/gddo-server/main.go b/gddo-server/main.go
index 2137cb9..635c641 100644
--- a/gddo-server/main.go
+++ b/gddo-server/main.go
@@ -410,7 +410,7 @@
 
 		return s.templates.execute(resp, template, status, http.Header{"Etag": {etag}}, map[string]interface{}{
 			"flashMessages": flashMessages,
-			"pkgs":          removeInternal(pdoc, pkgs),
+			"pkgs":          pkgs,
 			"pdoc":          newTDoc(s.v, pdoc),
 			"importerCount": importerCount,
 		})
@@ -1019,28 +1019,3 @@
 	http.Handle("/", s)
 	log.Fatal(http.ListenAndServe(s.v.GetString(ConfigBindAddress), s))
 }
-
-// removeInternal removes the internal packages from the given package
-// listing unless they are direct children of the given pdoc.
-// Packages filtered by this function will only list internal packages
-// underneath their own package godoc.
-func removeInternal(pdoc *doc.Package, pkgs []database.Package) []database.Package {
-	const internalPkg = "internal"
-
-	if len(pkgs) == 0 {
-		return pkgs
-	}
-	var filtered []database.Package
-	for _, pkg := range pkgs {
-		// List internal packages only under their parent package.
-		// Always list children of the internal packages if user
-		// is looking at the internal godoc.
-		if pdoc.Name != internalPkg && strings.Contains(pkg.Path, internalPkg) {
-			if !strings.HasPrefix(pkg.Path, pdoc.ImportPath+"/"+internalPkg) {
-				continue
-			}
-		}
-		filtered = append(filtered, pkg)
-	}
-	return filtered
-}
diff --git a/gddo-server/main_test.go b/gddo-server/main_test.go
index 6d42906..7c4bc78 100644
--- a/gddo-server/main_test.go
+++ b/gddo-server/main_test.go
@@ -7,11 +7,7 @@
 package main
 
 import (
-	"reflect"
 	"testing"
-
-	"github.com/golang/gddo/database"
-	"github.com/golang/gddo/doc"
 )
 
 var robotTests = []string{
@@ -37,77 +33,3 @@
 		}
 	}
 }
-
-func TestRemoveInternalPkgs(t *testing.T) {
-	tests := []struct {
-		name string
-		pdoc *doc.Package
-		pkgs []database.Package
-		want []database.Package
-	}{
-		{
-			name: "no children",
-			pdoc: &doc.Package{
-				ImportPath: "github.com/user/repo",
-				Name:       "repo",
-			},
-			pkgs: []database.Package{},
-			want: []database.Package{},
-		},
-		{
-			name: "indirect internal children",
-			pdoc: &doc.Package{
-				ImportPath: "github.com/user/repo",
-				Name:       "repo",
-			},
-			pkgs: []database.Package{
-				{Name: "agent", Path: "github.com/user/repo/cmd/internal/agent"},
-				{Name: "agent", Path: "github.com/user/repo/cmd/internal/reporter"},
-				{Name: "tool", Path: "github.com/user/repo/cmd/tool"},
-			},
-			want: []database.Package{
-				{Name: "tool", Path: "github.com/user/repo/cmd/tool"},
-			},
-		},
-		{
-			name: "direct internal children",
-			pdoc: &doc.Package{
-				ImportPath: "github.com/user/repo",
-				Name:       "repo",
-			},
-			pkgs: []database.Package{
-				{Name: "agent", Path: "github.com/user/repo/internal/agent"},
-				{Name: "agent", Path: "github.com/user/repo/internal/reporter"},
-				{Name: "tool", Path: "github.com/user/repo/cmd/tool"},
-			},
-			want: []database.Package{
-				{Name: "agent", Path: "github.com/user/repo/internal/agent"},
-				{Name: "agent", Path: "github.com/user/repo/internal/reporter"},
-				{Name: "tool", Path: "github.com/user/repo/cmd/tool"},
-			},
-		},
-		{
-			name: "internal package",
-			pdoc: &doc.Package{
-				ImportPath: "github.com/user/repo/internal",
-				Name:       "internal",
-			},
-			pkgs: []database.Package{
-				{Name: "agent", Path: "github.com/user/repo/internal/agent"},
-				{Name: "tool", Path: "github.com/user/repo/internal/tool"},
-			},
-			want: []database.Package{
-				{Name: "agent", Path: "github.com/user/repo/internal/agent"},
-				{Name: "tool", Path: "github.com/user/repo/internal/tool"},
-			},
-		},
-	}
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			got, want := removeInternal(tt.pdoc, tt.pkgs), tt.want
-			if !reflect.DeepEqual(got, want) {
-				t.Errorf("removeInternal() = %v, want %v", got, tt.want)
-			}
-		})
-	}
-}
