diff --git a/app/Entities/Repos/EntityRepo.php b/app/Entities/Repos/EntityRepo.php
new file mode 100644
index 000000000..e69de29bb
diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php
index bddfe3f6d..2213dedba 100644
--- a/app/Http/Controllers/BookController.php
+++ b/app/Http/Controllers/BookController.php
@@ -114,6 +114,7 @@ class BookController extends Controller
     {
         $book = $this->bookRepo->getBySlug($slug);
         $bookChildren = (new BookContents($book))->getTree(true);
+        $bookParentShelves = $book->shelves()->visible();
 
         Views::add($book);
         if ($request->has('shelf')) {
@@ -125,6 +126,7 @@ class BookController extends Controller
             'book' => $book,
             'current' => $book,
             'bookChildren' => $bookChildren,
+            'bookParentShelves' => $bookParentShelves,
             'activity' => Activity::entityActivity($book, 20, 1)
         ]);
     }
diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php
index 6bbc723b0..79e640378 100644
--- a/resources/lang/en/entities.php
+++ b/resources/lang/en/entities.php
@@ -135,6 +135,7 @@ return [
     'books_sort_chapters_last' => 'Chapters Last',
     'books_sort_show_other' => 'Show Other Books',
     'books_sort_save' => 'Save New Order',
+    'book_parent_shelves_empty' => 'Shelves that this book is on will appear here.',
 
     // Chapters
     'chapter' => 'Chapter',
diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php
index cbafdb436..41581e123 100644
--- a/resources/views/books/show.blade.php
+++ b/resources/views/books/show.blade.php
@@ -57,9 +57,7 @@
 
 @stop
 
-
 @section('right')
-
     <div class="mb-xl">
         <h5>{{ trans('common.details') }}</h5>
         <div class="text-small text-muted blended-links">
@@ -76,7 +74,6 @@
         </div>
     </div>
 
-
     <div class="actions mb-xl">
         <h5>{{ trans('common.actions') }}</h5>
         <div class="icon-list text-primary">
@@ -125,6 +122,16 @@
         </div>
     </div>
 
+    <div class="actions mb-xl">
+        <h5>{{ trans('entities.shelves_long') }}</h5>
+
+        @if(count($bookParentShelves) > 0)
+            @include('partials.entity-list', ['entities' => $bookParentShelves, 'style' => 'compact'])
+        @else
+            <div class="body text-muted">{{ trans('entities.book_parent_shelves_empty') }}</div>
+        @endif
+    </div>
+
 @stop
 
 @section('left')
diff --git a/tests/Entity/BookShelfTest.php b/tests/Entity/BookShelfTest.php
index f3d29f60c..8f41e83ab 100644
--- a/tests/Entity/BookShelfTest.php
+++ b/tests/Entity/BookShelfTest.php
@@ -264,4 +264,32 @@ class BookShelfTest extends TestCase
         $pageVisit->assertElementNotContains('.breadcrumbs', $shelf->getShortName());
     }
 
+    public function test_bookshelves_show_on_book()
+    {
+        // Create shelf
+        $shelfInfo = [
+            'name' => 'My test shelf' . Str::random(4),
+            'description' => 'Test shelf description ' . Str::random(10)
+        ];
+
+        $this->asEditor()->post('/shelves', $shelfInfo);
+        $shelf = Bookshelf::where('name', '=', $shelfInfo['name'])->first();
+
+        // Create book and add to shelf
+        $this->asEditor()->post($shelf->getUrl('/create-book'), [
+            'name' => 'Test book name',
+            'description' => 'Book in shelf description'
+        ]);
+
+        $newBook = Book::query()->orderBy('id', 'desc')->first();
+
+        $resp = $this->asEditor()->get($newBook->getUrl());
+        $resp->assertSee($shelfInfo['name']);
+
+        // Remove shelf
+        $this->delete($shelf->getUrl());
+
+        $resp = $this->asEditor()->get($newBook->getUrl());
+        $resp->assertDontSee($shelfInfo['name']);
+    }
 }