diff --git a/server/PackageURL.js b/server/PackageURL.js
index 38e7b0b..417dc63 100644
--- a/server/PackageURL.js
+++ b/server/PackageURL.js
@@ -3,11 +3,15 @@ const url = require('url')
 const URLFormat = /^\/((?:@[^\/@]+\/)?[^\/@]+)(?:@([^\/]+))?(\/.*)?$/
 
 function decodeParam(param) {
-  try {
-    return decodeURIComponent(param)
-  } catch (error) {
-    return null
+  if (param) {
+    try {
+      return decodeURIComponent(param)
+    } catch (error) {
+      // Ignore invalid params.
+    }
   }
+
+  return ''
 }
 
 function parsePackageURL(packageURL) {
diff --git a/server/PackageURL.test.js b/server/PackageURL.test.js
index b41efd8..75becf4 100644
--- a/server/PackageURL.test.js
+++ b/server/PackageURL.test.js
@@ -1,4 +1,4 @@
-const { parsePackageURL } = require('./PackageURL').parse
+const parsePackageURL = require('./PackageURL').parse
 
 describe('parsePackageURL', () => {
   it('parses plain packages', () => {
@@ -81,8 +81,4 @@ describe('parsePackageURL', () => {
   it('returns null for invalid pathnames', () => {
     expect(parsePackageURL('history')).toBe(null)
   })
-
-  it('returns null for invalid query parameters', () => {
-    expect(parsePackageURL('/query-string@5.0.0/index.js?invalid')).toBe(null)
-  })
 })