diff --git a/client/client.go b/client/client.go
index fabac91..6666d71 100644
--- a/client/client.go
+++ b/client/client.go
@@ -43,6 +43,7 @@
 	"strings"
 	"time"
 
+	"golang.org/x/vulndb/internal"
 	"golang.org/x/vulndb/osv"
 )
 
@@ -57,8 +58,6 @@
 	GetByID(string) (*osv.Entry, error)
 }
 
-const idDir = "byID"
-
 type source interface {
 	Client
 	Index() (osv.DBIndex, error)
@@ -83,7 +82,7 @@
 }
 
 func (ls *localSource) GetByID(id string) (*osv.Entry, error) {
-	content, err := ioutil.ReadFile(filepath.Join(ls.dir, idDir, id+".json"))
+	content, err := ioutil.ReadFile(filepath.Join(ls.dir, internal.IDDirectory, id+".json"))
 	if os.IsNotExist(err) {
 		return nil, nil
 	} else if err != nil {
@@ -226,7 +225,7 @@
 
 func (hs *httpSource) GetByID(id string) (*osv.Entry, error) {
 	// TODO(jba): cache?
-	content, err := hs.readBody(fmt.Sprintf("%s/%s/%s.json", hs.url, idDir, id))
+	content, err := hs.readBody(fmt.Sprintf("%s/%s/%s.json", hs.url, internal.IDDirectory, id))
 	if err != nil || content == nil {
 		return nil, err
 	}
diff --git a/client/client_test.go b/client/client_test.go
index 924d73a..d09e3ec 100644
--- a/client/client_test.go
+++ b/client/client_test.go
@@ -20,6 +20,7 @@
 	"time"
 
 	"github.com/google/go-cmp/cmp"
+	"golang.org/x/vulndb/internal"
 	"golang.org/x/vulndb/osv"
 )
 
@@ -129,7 +130,7 @@
 	if err := createDirAndFile(path.Join(dbName, ""), "index.json", index); err != nil {
 		return "", err
 	}
-	if err := createDirAndFile(path.Join(dbName, idDir), "ID.json", testVuln); err != nil {
+	if err := createDirAndFile(path.Join(dbName, internal.IDDirectory), "ID.json", testVuln); err != nil {
 		return "", err
 	}
 	return dbName, nil
@@ -267,7 +268,7 @@
 		t.Skip("skipping test: no network on js")
 	}
 
-	http.HandleFunc("/byID/ID.json", dataHandler(testVuln))
+	http.HandleFunc(fmt.Sprintf("/%s/ID.json", internal.IDDirectory), dataHandler(testVuln))
 	l, err := net.Listen("tcp", "127.0.0.1:")
 	if err != nil {
 		t.Fatalf("failed to listen on 127.0.0.1: %s", err)
diff --git a/cmd/dbdiff/main.go b/cmd/dbdiff/main.go
index db3d868..46c6b86 100644
--- a/cmd/dbdiff/main.go
+++ b/cmd/dbdiff/main.go
@@ -13,6 +13,7 @@
 	"strings"
 
 	"github.com/google/go-cmp/cmp"
+	"golang.org/x/vulndb/internal"
 	"golang.org/x/vulndb/osv"
 )
 
@@ -42,7 +43,7 @@
 				if err := json.Unmarshal(content, &index); err != nil {
 					return fmt.Errorf("unable to parse %q: %s", fpath, err)
 				}
-			} else if path == filepath.Join(dbPath, "ID") {
+			} else if path == filepath.Join(dbPath, internal.IDDirectory) {
 				var entry osv.Entry
 				if err := json.Unmarshal(content, &entry); err != nil {
 					return fmt.Errorf("unable to parse %q: %s", fpath, err)
diff --git a/internal/internal.go b/internal/internal.go
index d8055b5..fd10ebd 100644
--- a/internal/internal.go
+++ b/internal/internal.go
@@ -11,6 +11,10 @@
 	"strings"
 )
 
+// IDDirectory is the name of the directory that contains entries
+// listed by their IDs.
+const IDDirectory = "ID"
+
 // Readfilelines reads and returns the lines from a file.
 // Whitespace on each line is trimmed.
 // Blank lines and lines beginning with '#' are ignored.
