diff --git a/gddo-server/main.go b/gddo-server/main.go
index 223b838..67accfa 100644
--- a/gddo-server/main.go
+++ b/gddo-server/main.go
@@ -313,7 +313,7 @@
 
 		return s.templates.execute(resp, template, status, http.Header{"Etag": {etag}}, map[string]interface{}{
 			"flashMessages": flashMessages,
-			"pkgs":          pkgs,
+			"pkgs":          removeInternal(pdoc, pkgs),
 			"pdoc":          newTDoc(s.v, pdoc),
 			"importerCount": importerCount,
 		})
@@ -1010,3 +1010,28 @@
 	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 7c4bc78..6d42906 100644
--- a/gddo-server/main_test.go
+++ b/gddo-server/main_test.go
@@ -7,7 +7,11 @@
 package main
 
 import (
+	"reflect"
 	"testing"
+
+	"github.com/golang/gddo/database"
+	"github.com/golang/gddo/doc"
 )
 
 var robotTests = []string{
@@ -33,3 +37,77 @@
 		}
 	}
 }
+
+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)
+			}
+		})
+	}
+}
