diff --git a/Lib/test/list_tests.py b/Lib/test/list_tests.py
index be054ea..ebf86c5 100644
--- a/Lib/test/list_tests.py
+++ b/Lib/test/list_tests.py
@@ -365,6 +365,13 @@
         self.assertEqual(u.index(0, 3), 3)
         self.assertEqual(u.index(0, 3, 4), 3)
         self.assertRaises(ValueError, u.index, 2, 0, -10)
+        self.assertEqual(u.index(1, None), 4)
+        self.assertEqual(u.index(1, None, None), 4)
+        self.assertEqual(u.index(1, 0, None), 4)
+        self.assertEqual(u.index(1, None, 6), 4)
+        self.assertRaises(ValueError, u.index, -1, 3)
+        self.assertRaises(ValueError, u.index, -1, 3, None)
+        self.assertRaises(ValueError, u.index, 1, None, 4)
 
         self.assertRaises(TypeError, u.index)
 
diff --git a/Lib/test/seq_tests.py b/Lib/test/seq_tests.py
index f655c29..824ae01 100644
--- a/Lib/test/seq_tests.py
+++ b/Lib/test/seq_tests.py
@@ -361,6 +361,13 @@
         self.assertEqual(u.index(0, 3), 3)
         self.assertEqual(u.index(0, 3, 4), 3)
         self.assertRaises(ValueError, u.index, 2, 0, -10)
+        self.assertEqual(u.index(1, None), 4)
+        self.assertEqual(u.index(1, None, None), 4)
+        self.assertEqual(u.index(1, 0, None), 4)
+        self.assertEqual(u.index(1, None, 6), 4)
+        self.assertRaises(ValueError, u.index, -1, 3)
+        self.assertRaises(ValueError, u.index, -1, 3, None)
+        self.assertRaises(ValueError, u.index, 1, None, 4)
 
         self.assertRaises(TypeError, u.index)
 
diff --git a/Misc/NEWS b/Misc/NEWS
index de3d3f3..720fef3 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@
 Core and Builtins
 -----------------
 
+- Issue #13340: Accept None as start and stop parameters for
+  list.index() and tuple.index().
+
 - Issue #13343: Fix a SystemError when a lambda expression uses a global
   variable in the default value of a keyword-only argument:
   (lambda *, arg=GLOBAL_NAME: None)
diff --git a/Objects/listobject.c b/Objects/listobject.c
index 00de597..5097956 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -2109,12 +2109,20 @@
 {
     Py_ssize_t i, start=0, stop=Py_SIZE(self);
     PyObject *v, *format_tuple, *err_string;
+    PyObject *start_obj = NULL, *stop_obj = NULL;
     static PyObject *err_format = NULL;
 
-    if (!PyArg_ParseTuple(args, "O|O&O&:index", &v,
-                                _PyEval_SliceIndex, &start,
-                                _PyEval_SliceIndex, &stop))
+    if (!PyArg_ParseTuple(args, "O|OO:index", &v, &start_obj, &stop_obj))
         return NULL;
+
+    if (start_obj != Py_None)
+        if (!_PyEval_SliceIndex(start_obj, &start))
+            return NULL;
+
+    if (stop_obj != Py_None)
+        if (!_PyEval_SliceIndex(stop_obj, &stop))
+            return NULL;
+
     if (start < 0) {
         start += Py_SIZE(self);
         if (start < 0)
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index 8aacd12..6f893d9 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -483,12 +483,19 @@
 tupleindex(PyTupleObject *self, PyObject *args)
 {
     Py_ssize_t i, start=0, stop=Py_SIZE(self);
-    PyObject *v;
+    PyObject *v, *start_obj = NULL, *stop_obj = NULL;
 
-    if (!PyArg_ParseTuple(args, "O|O&O&:index", &v,
-                                _PyEval_SliceIndex, &start,
-                                _PyEval_SliceIndex, &stop))
+    if (!PyArg_ParseTuple(args, "O|OO:index", &v, &start_obj, &stop_obj))
         return NULL;
+
+    if (start_obj != Py_None)
+        if (!_PyEval_SliceIndex(start_obj, &start))
+            return NULL;
+
+    if (stop_obj != Py_None)
+        if (!_PyEval_SliceIndex(stop_obj, &stop))
+            return NULL;
+
     if (start < 0) {
         start += Py_SIZE(self);
         if (start < 0)
