diff --git a/packages/server/src/graphql/definitions/upload.js b/packages/server/src/graphql/definitions/upload.js
index f9c00da7b669923aa252ea7ad4efdea31ffbef97..af30fd841d33196ffc131dab8f2d40e4c4e9084c 100644
--- a/packages/server/src/graphql/definitions/upload.js
+++ b/packages/server/src/graphql/definitions/upload.js
@@ -15,17 +15,15 @@ const resolvers = {
       const { stream, filename, encoding } = await file
 
       const raw = await randomBytes(16)
-      const outPath = path.join(
-        uploadsPath,
-        raw.toString('hex') + path.extname(filename),
-      )
+      const generatedFilename = raw.toString('hex') + path.extname(filename)
+      const outPath = path.join(uploadsPath, generatedFilename)
 
       await fs.ensureDir(uploadsPath)
       const outStream = fs.createWriteStream(outPath)
       stream.pipe(outStream, { encoding })
 
       return new Promise((resolve, reject) => {
-        outStream.on('finish', () => resolve({ filename: outPath }))
+        outStream.on('finish', () => resolve({ url: `/${generatedFilename}` }))
         outStream.on('error', reject)
       })
     },
@@ -36,12 +34,12 @@ const typeDefs = `
   scalar Upload
   
   extend type Mutation {
-    # Upload a file, store it on the server and return the generated file name
+    # Upload a file, store it on the server and return the file url
     upload(file: Upload!): UploadResult
   } 
   
   type UploadResult {
-    filename: String
+    url: String
   }
 `
 
diff --git a/packages/server/test/graphql/upload_test.js b/packages/server/test/graphql/upload_test.js
index 41bda25b4d2fb5115eda2c6e8ae440f7a9ca9dc8..3be8823ac670ddd0dd55a01d133f21c33fc1d9b5 100644
--- a/packages/server/test/graphql/upload_test.js
+++ b/packages/server/test/graphql/upload_test.js
@@ -22,7 +22,7 @@ describe('GraphQL uploads', () => {
           operationName: null,
           variables: { file: null },
           query:
-            'mutation ($file: Upload!) {\n  upload(file: $file) {\n    filename\n    __typename\n  }\n}\n',
+            'mutation ($file: Upload!) {\n  upload(file: $file) {\n    url\n    __typename\n  }\n}\n',
         }),
       )
       .field('map', JSON.stringify({ '0': ['variables.file'] }))
@@ -30,7 +30,9 @@ describe('GraphQL uploads', () => {
       .set('Authorization', `Bearer ${token}`)
 
     expect(body).toMatchObject({
-      data: { upload: { filename: expect.stringMatching(/\w{16}\.txt/) } },
+      data: {
+        upload: { url: expect.stringMatching(/^\/\w{32}\.txt$/) },
+      },
     })
   })
 })