diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 1a7801d9eb0e78ae735f86546bc975c8ec21b932..391c3264791e33286f6eb975653cf34e2565cd93 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -52,5 +52,4 @@ jobs:
 
       - name: Run tests
         run: |
-          export NODE_OPTIONS=--openssl-legacy-provider
           ./run-tests.sh
diff --git a/docs/conf.py b/docs/conf.py
index 05f24b74fc365c4ee817e3f664a570d5f533de85..c58f06e2921664217d282f0f07f7ca8dd178b484 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -7,10 +7,6 @@
 # Invenio is free software; you can redistribute it and/or modify it
 # under the terms of the MIT License; see LICENSE file for more details.
 
-from __future__ import print_function
-
-import sphinx.environment
-
 from invenio_previewer import __version__
 
 # -- General configuration ------------------------------------------------
diff --git a/invenio_previewer/__init__.py b/invenio_previewer/__init__.py
index 73a76e3ff5d5da671266971728df0e586245b4e2..b875e33e33da911e1f6ea66d500df0a7d37e71c5 100644
--- a/invenio_previewer/__init__.py
+++ b/invenio_previewer/__init__.py
@@ -315,8 +315,6 @@ Now define the priority for all previewers by adding the newly created
 ... ]
 """
 
-from __future__ import absolute_import, print_function
-
 from .ext import InvenioPreviewer
 from .proxies import current_previewer
 
diff --git a/invenio_previewer/_compat.py b/invenio_previewer/_compat.py
deleted file mode 100644
index eae0289dcc2566de6fab3f981fc428426090024b..0000000000000000000000000000000000000000
--- a/invenio_previewer/_compat.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of Invenio.
-# Copyright (C) 2016-2019 CERN.
-#
-# Invenio is free software; you can redistribute it and/or modify it
-# under the terms of the MIT License; see LICENSE file for more details.
-
-"""Python 2/3 compatiblity."""
-
-from __future__ import absolute_import, print_function
-
-import sys
-
-PY2 = sys.version_info[0] == 2
-
-if PY2:
-    text_type = unicode
-    string_types = (str, unicode)
-else:
-    text_type = str
-    string_types = (str,)
diff --git a/invenio_previewer/api.py b/invenio_previewer/api.py
index 576f6357059e22c4cd11edc5d50f4daa17dec9cc..8cac8ed66d5fb7fb4b1c69c0873438bd883f397a 100644
--- a/invenio_previewer/api.py
+++ b/invenio_previewer/api.py
@@ -8,8 +8,6 @@
 
 """File reader utility."""
 
-from __future__ import absolute_import, print_function
-
 from os.path import basename, splitext
 
 from flask import url_for
diff --git a/invenio_previewer/ext.py b/invenio_previewer/ext.py
index 69a91c068aac552c1242156a476701055a41cc2a..5e33ed103a54d7fe2b3a92fac090a86f9c09e79c 100644
--- a/invenio_previewer/ext.py
+++ b/invenio_previewer/ext.py
@@ -8,10 +8,7 @@
 
 """Invenio module for previewing files."""
 
-from __future__ import absolute_import, print_function
-
 import pkg_resources
-import six
 from flask import current_app
 from pkg_resources import DistributionNotFound, get_distribution
 from werkzeug.utils import cached_property, import_string
@@ -22,7 +19,7 @@ from .views import blueprint
 
 def obj_or_import_string(value, default=None):
     """Import string or return object."""
-    if isinstance(value, six.string_types):
+    if isinstance(value, str):
         return import_string(value)
     elif value:
         return value
diff --git a/invenio_previewer/extensions/csv_dthreejs.py b/invenio_previewer/extensions/csv_dthreejs.py
index 8658650b86ce7eaff7e174a0dfffdaf19ccec849..08003949fa65ae8fe627805991d7a40674888e87 100644
--- a/invenio_previewer/extensions/csv_dthreejs.py
+++ b/invenio_previewer/extensions/csv_dthreejs.py
@@ -8,8 +8,6 @@
 
 """Render a CSV file using d3.js."""
 
-from __future__ import absolute_import, print_function
-
 import csv
 
 from flask import current_app, render_template
diff --git a/invenio_previewer/extensions/default.py b/invenio_previewer/extensions/default.py
index 84843fd4342268fb648a4e981274716963a07656..c9e050232c309321424bb35b357034a17facfe66 100644
--- a/invenio_previewer/extensions/default.py
+++ b/invenio_previewer/extensions/default.py
@@ -8,8 +8,6 @@
 
 """Default rendering returning a default web page."""
 
-from __future__ import absolute_import, print_function
-
 from flask import render_template
 
 from ..proxies import current_previewer
diff --git a/invenio_previewer/extensions/json_prismjs.py b/invenio_previewer/extensions/json_prismjs.py
index 42c36e87502491547a9227b1e04115f4d20b4330..433328b25ba931630c928c0ad62db93e70d3313c 100644
--- a/invenio_previewer/extensions/json_prismjs.py
+++ b/invenio_previewer/extensions/json_prismjs.py
@@ -8,8 +8,6 @@
 
 """Previews a JSON file."""
 
-from __future__ import absolute_import, print_function
-
 import json
 from collections import OrderedDict
 
diff --git a/invenio_previewer/extensions/pdfjs.py b/invenio_previewer/extensions/pdfjs.py
index 80f6f36252b4f093fb05554d95f6424719fc2452..6921613cb49df276cd136dfc8662c0df4ac52cc6 100644
--- a/invenio_previewer/extensions/pdfjs.py
+++ b/invenio_previewer/extensions/pdfjs.py
@@ -8,8 +8,6 @@
 
 """PDF previewer based on pdf.js."""
 
-from __future__ import absolute_import, print_function
-
 from flask import render_template
 
 from ..proxies import current_previewer
diff --git a/invenio_previewer/extensions/simple_image.py b/invenio_previewer/extensions/simple_image.py
index 6a5990b1bb7119a451a1c283961b073d0712fa87..a7ea7b082b4b517d02c51eb506399e05ab30ee93 100644
--- a/invenio_previewer/extensions/simple_image.py
+++ b/invenio_previewer/extensions/simple_image.py
@@ -8,8 +8,6 @@
 
 """Previews simple image files."""
 
-from __future__ import absolute_import, print_function
-
 from flask import current_app, render_template
 
 from ..proxies import current_previewer
diff --git a/invenio_previewer/extensions/xml_prismjs.py b/invenio_previewer/extensions/xml_prismjs.py
index 51e6f5ce98aa38764f62dc2c59ff8ab86fcc62ee..c11810b8a1de36bae4a5504ebf352d2cea6fd209 100644
--- a/invenio_previewer/extensions/xml_prismjs.py
+++ b/invenio_previewer/extensions/xml_prismjs.py
@@ -8,8 +8,6 @@
 
 """Previews an XML file."""
 
-from __future__ import absolute_import, print_function
-
 import xml.dom.minidom
 
 from flask import current_app, render_template
diff --git a/invenio_previewer/extensions/zip.py b/invenio_previewer/extensions/zip.py
index a4d0821445039996864f28f7f3a884c5190c086e..63cd794223cfee7deabb1bc87420718035ac835f 100644
--- a/invenio_previewer/extensions/zip.py
+++ b/invenio_previewer/extensions/zip.py
@@ -8,16 +8,12 @@
 
 """Simple ZIP archive previewer."""
 
-from __future__ import absolute_import, print_function
-
 import os
 import zipfile
 
 import cchardet as chardet
 from flask import current_app, render_template
-from six import binary_type
 
-from .._compat import text_type
 from ..proxies import current_previewer
 
 previewable_extensions = ["zip"]
@@ -33,7 +29,7 @@ def make_tree(file):
             zf = zipfile.ZipFile(fp)
             # Detect filenames encoding.
             sample = " ".join(zf.namelist()[:max_files_count])
-            if not isinstance(sample, binary_type):
+            if not isinstance(sample, bytes):
                 sample = sample.encode("utf-16be")
             encoding = chardet.detect(sample).get("encoding", "utf-8")
             for i, info in enumerate(zf.infolist()):
@@ -42,7 +38,7 @@ def make_tree(file):
                 comps = info.filename.split(os.sep)
                 node = tree
                 for c in comps:
-                    if not isinstance(c, text_type):
+                    if not isinstance(c, str):
                         c = c.decode(encoding)
                     if c not in node["children"]:
                         if c == "":
diff --git a/invenio_previewer/proxies.py b/invenio_previewer/proxies.py
index 6fefae3dae3671cb4b3b8a9cd2b9c3a8271c9916..069a0e11591fa1e103c8686060f42998b9e2051e 100644
--- a/invenio_previewer/proxies.py
+++ b/invenio_previewer/proxies.py
@@ -8,8 +8,6 @@
 
 """Proxy for current previewer."""
 
-from __future__ import absolute_import, print_function
-
 from flask import current_app
 from werkzeug.local import LocalProxy
 
diff --git a/invenio_previewer/version.py b/invenio_previewer/version.py
index 8791d57c3226333b69d2fc55306f32d288a9121c..271fd0ea554400c9470139bd755c4129e09e038c 100644
--- a/invenio_previewer/version.py
+++ b/invenio_previewer/version.py
@@ -12,6 +12,4 @@ This file is imported by ``invenio_previewer.__init__``,
 and parsed by ``setup.py``.
 """
 
-from __future__ import absolute_import, print_function
-
 __version__ = "1.5.0"
diff --git a/invenio_previewer/views.py b/invenio_previewer/views.py
index e9483cb7fa4f54ad0e9709ace8d1723c95c8a638..274ff14ff9cc83ee132035d193dd59d974e6a36a 100644
--- a/invenio_previewer/views.py
+++ b/invenio_previewer/views.py
@@ -8,8 +8,6 @@
 
 """View method for Invenio-Records-UI for previewing files."""
 
-from __future__ import absolute_import, print_function
-
 from flask import Blueprint, abort, current_app, request
 
 from .api import PreviewFile
diff --git a/invenio_previewer/webpack.py b/invenio_previewer/webpack.py
index 0c5abd8cf4481da91f36233d480a7a3b9387e57a..0b40e4a1e2f450a6441e4917bb9f7e7c34d88cd1 100644
--- a/invenio_previewer/webpack.py
+++ b/invenio_previewer/webpack.py
@@ -25,8 +25,6 @@
 
 """JS/CSS bundles for Previewer."""
 
-from __future__ import absolute_import, print_function
-
 from invenio_assets.webpack import WebpackThemeBundle
 
 previewer = WebpackThemeBundle(
diff --git a/tests/conftest.py b/tests/conftest.py
index 2befb50e8153594ef79724d6bfc713e1c4afac6e..e67abf3e4e6912dc970c7cecb42e2f3fde896a46 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -9,8 +9,6 @@
 
 """Pytest configuration."""
 
-from __future__ import absolute_import, print_function
-
 import os
 import shutil
 import tempfile
diff --git a/tests/test_invenio_previewer.py b/tests/test_invenio_previewer.py
index 2ed8348ed8d1cb91525b96c1586843ab2d110eda..acaff2d9e17dbd06c14a737047a489b7e88e0612 100644
--- a/tests/test_invenio_previewer.py
+++ b/tests/test_invenio_previewer.py
@@ -8,8 +8,6 @@
 
 """Module tests."""
 
-from __future__ import absolute_import, print_function
-
 import importlib
 
 from flask import Flask
diff --git a/tests/test_macros.py b/tests/test_macros.py
index 98ef3b168240e8929d2ce489cc7954d16ccc4434..f73c440cd4c054df7846cd3ebacf78cf2a0482e2 100644
--- a/tests/test_macros.py
+++ b/tests/test_macros.py
@@ -8,8 +8,6 @@
 
 """Views module tests."""
 
-from __future__ import absolute_import, print_function
-
 import zipfile
 
 from flask import render_template_string, url_for
@@ -292,6 +290,6 @@ def test_view_macro_file_list(testapp):
         )
 
         assert 'href="/record/1/files/test1.txt?download=1"' in result
-        assert '<td>10 Bytes</td>' in result
+        assert "<td>10 Bytes</td>" in result
         assert 'href="/record/1/files/test2.txt?download=1"' in result
-        assert '<td>12.0 MB</td>' in result
+        assert "<td>12.0 MB</td>" in result
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 236e968915c5b2d46fb698872677efa9d21ec67f..05f3400ece5f79f751dea6d31d07f38163c81513 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -8,8 +8,6 @@
 
 """Test of utilities module."""
 
-from __future__ import absolute_import, print_function
-
 import pytest
 from mock import patch
 from six import BytesIO
diff --git a/tests/test_views.py b/tests/test_views.py
index efb4c272089d7be15590cbafcd9dd094206a99e9..03c90d6c9556c1c930b6f10a039c62b417bc6e98 100644
--- a/tests/test_views.py
+++ b/tests/test_views.py
@@ -8,8 +8,6 @@
 
 """Views module tests."""
 
-from __future__ import absolute_import, print_function
-
 from flask import render_template_string
 
 
@@ -41,9 +39,9 @@ def test_view_macro_file_list(testapp):
         )
 
         assert 'href="/record/1/files/test1.txt?download=1"' in result
-        assert '<td class="nowrap">10 Bytes</td>' in result
+        assert "<td>10 Bytes</td>" in result
         assert 'href="/record/1/files/test2.txt?download=1"' in result
-        assert '<td class="nowrap">12.0 MB</td>' in result
+        assert "<td>12.0 MB</td>" in result
 
 
 def test_previewable_test(testapp):