diff --git a/doc/release_notes/v1.4.0.rst b/doc/release_notes/v1.4.0.rst
index 5fbe878ea..0396a1584 100644
--- a/doc/release_notes/v1.4.0.rst
+++ b/doc/release_notes/v1.4.0.rst
@@ -30,6 +30,8 @@ Fixes
   frames when the Basic Offset Table was empty. This may still occur when
   multiple fragments per frame are present for non-JPEG transfer syntaxes or
   where no JPEG EOI/EOC marker is present (:issue:`685`)
+* Fixed possible incorrect switch to explicit VR in sequence items
+  (:issue:`999`)
 
 Enhancements
 ............
diff --git a/pydicom/filereader.py b/pydicom/filereader.py
index 93945a15d..d699a29df 100644
--- a/pydicom/filereader.py
+++ b/pydicom/filereader.py
@@ -322,7 +322,8 @@ def _is_implicit_vr(fp, implicit_vr_is_assumed, is_little_endian, stop_when):
 
 def read_dataset(fp, is_implicit_VR, is_little_endian, bytelength=None,
                  stop_when=None, defer_size=None,
-                 parent_encoding=default_encoding, specific_tags=None):
+                 parent_encoding=default_encoding, specific_tags=None,
+                 at_top_level=True):
     """Return a :class:`~pydicom.dataset.Dataset` instance containing the next
     dataset in the file.
 
@@ -348,6 +349,9 @@ def read_dataset(fp, is_implicit_VR, is_little_endian, bytelength=None,
         Character Set* isn't specified.
     specific_tags : list or None
         See :func:`dcmread` for parameter info.
+    at_top_level: bool
+        If dataset is top level (not within a sequence).
+        Used to turn off explicit VR heuristic within sequences
 
     Returns
     -------
@@ -361,8 +365,9 @@ def read_dataset(fp, is_implicit_VR, is_little_endian, bytelength=None,
     """
     raw_data_elements = dict()
     fp_start = fp.tell()
-    is_implicit_VR = _is_implicit_vr(
-        fp, is_implicit_VR, is_little_endian, stop_when)
+    if at_top_level:
+        is_implicit_VR = _is_implicit_vr(
+            fp, is_implicit_VR, is_little_endian, stop_when)
     fp.seek(fp_start)
     de_gen = data_element_generator(fp, is_implicit_VR, is_little_endian,
                                     stop_when, defer_size, parent_encoding,
@@ -456,11 +461,13 @@ def read_sequence_item(fp, is_implicit_VR, is_little_endian, encoding,
             fp.tell() - 4 + offset, bytes2hex(bytes_read)))
     if length == 0xFFFFFFFF:
         ds = read_dataset(fp, is_implicit_VR, is_little_endian,
-                          bytelength=None, parent_encoding=encoding)
+                          bytelength=None, parent_encoding=encoding,
+                          at_top_level=False)
         ds.is_undefined_length_sequence_item = True
     else:
         ds = read_dataset(fp, is_implicit_VR, is_little_endian, length,
-                          parent_encoding=encoding)
+                          parent_encoding=encoding,
+                          at_top_level=False)
         ds.is_undefined_length_sequence_item = False
         logger.debug("%08x: Finished sequence item" % (fp.tell() + offset,))
     ds.seq_item_tell = seq_item_tell

Heuristic for Explicit VR acting in sequence datasets
**Describe the bug**
There is a check to confirm implicit VR by looking for two ascii characters and switching to explicit with a warning (#823).  It was thought this was safe because length in first data elements would not be that large.  However, in sequence item datasets this may not be true.

Noted in google group conversation at https://groups.google.com/forum/#!topic/pydicom/VUmvUYmQxc0 (note that the title of that thread is not correct. that was not the problem).

Test demonstrating it and fix already done - PR to follow shortly.

diff --git a/pydicom/tests/test_filereader.py b/pydicom/tests/test_filereader.py
index 02e234f84..c30a3377d 100644
--- a/pydicom/tests/test_filereader.py
+++ b/pydicom/tests/test_filereader.py
@@ -22,6 +22,7 @@ from pydicom.dataelem import DataElement, DataElement_from_raw
 from pydicom.errors import InvalidDicomError
 from pydicom.filebase import DicomBytesIO
 from pydicom.filereader import data_element_generator
+from pydicom.sequence import Sequence
 from pydicom.tag import Tag, TupleTag
 from pydicom.uid import ImplicitVRLittleEndian
 import pydicom.valuerep
@@ -729,6 +730,35 @@ class TestIncorrectVR(object):
                 self.ds_implicit, is_implicit_VR=False, is_little_endian=True
             )
 
+    def test_seq_item_looks_like_explicit_VR(self):
+        # For issue 999.
+
+        # Set up an implicit VR dataset with a "normal" group 8 tag,
+        # followed by a sequence with an item (dataset) having
+        # a data element length that looks like a potential valid VR
+        ds = Dataset()
+        ds.file_meta = Dataset()
+        ds.file_meta.MediaStorageSOPClassUID = "1.1.1"
+        ds.file_meta.MediaStorageSOPInstanceUID = "2.2.2"
+        ds.is_implicit_VR = True
+        ds.is_little_endian = True
+        ds.SOPClassUID = '9.9.9'  # First item group 8 in top-level dataset
+        seq = Sequence()
+        seq_ds = Dataset()
+        seq_ds.BadPixelImage = b"\3" * 0x5244  # length looks like "DR"
+        seq.append(seq_ds)
+        ds.ReferencedImageSequence = seq
+
+        dbio = DicomBytesIO()
+        ds.save_as(dbio, write_like_original=False)
+
+        # Now read the constructed dataset back in
+        # In original issue, shows warning that has detected what appears
+        # to be Explicit VR, then throws NotImplemented for the unknown VR
+        dbio.seek(0)
+        ds = dcmread(dbio)
+        ds.remove_private_tags()  # forces it to actually parse SQ
+
 
 class TestUnknownVR(object):
     @pytest.mark.parametrize(

pip install -e .
parse_log_pytest
pytest
numpy>=1.16.0 pytest
apt-get update apt-get install -y gcc
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
numpy==2.0.2
packaging @ file:///croot/packaging_1734472117206/work
pluggy @ file:///croot/pluggy_1733169602837/work
-e git+https://github.com/pydicom/pydicom.git@14acdd4d767ee55e8e84daeb6f80f81ef4748fee#egg=pydicom
pytest @ file:///croot/pytest_1738938843180/work
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work

name: pydicom
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - numpy==2.0.2
prefix: /opt/conda/envs/pydicom

pydicom/tests/test_filereader.py::TestIncorrectVR::test_seq_item_looks_like_explicit_VR
pydicom/tests/test_filereader.py::TestReader::test_long_specific_char_set pydicom/tests/test_filereader.py::TestReader::test_file_meta_dataset_implicit_vr pydicom/tests/test_filereader.py::TestIncorrectVR::test_implicit_vr_expected_explicit_used pydicom/tests/test_filereader.py::TestIncorrectVR::test_implicit_vr_expected_explicit_used_strict pydicom/tests/test_filereader.py::TestIncorrectVR::test_explicit_vr_expected_implicit_used pydicom/tests/test_filereader.py::TestIncorrectVR::test_explicit_vr_expected_implicit_used_strict pydicom/tests/test_filereader.py::TestReadDataElement::test_read_OD_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_OD_explicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_OL_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_OL_explicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_UC_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_UC_explicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_UR_implicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_UR_explicit_little pydicom/tests/test_filereader.py::TestReadDataElement::test_read_AE pydicom/tests/test_filereader.py::TestDeferredRead::test_time_check pydicom/tests/test_filereader.py::TestDeferredRead::test_file_exists pydicom/tests/test_filereader.py::TestDeferredRead::test_values_identical
pydicom/tests/test_filereader.py::TestReader::test_empty_numbers_tag pydicom/tests/test_filereader.py::TestReader::test_UTF8_filename pydicom/tests/test_filereader.py::TestReader::test_RTPlan pydicom/tests/test_filereader.py::TestReader::test_RTDose pydicom/tests/test_filereader.py::TestReader::test_CT pydicom/tests/test_filereader.py::TestReader::test_CT_PixelData pydicom/tests/test_filereader.py::TestReader::test_no_force pydicom/tests/test_filereader.py::TestReader::test_RTStruct pydicom/tests/test_filereader.py::TestReader::test_dir pydicom/tests/test_filereader.py::TestReader::test_MR pydicom/tests/test_filereader.py::TestReader::test_deflate pydicom/tests/test_filereader.py::TestReader::test_no_pixels_read pydicom/tests/test_filereader.py::TestReader::test_specific_tags pydicom/tests/test_filereader.py::TestReader::test_specific_tags_with_unknown_length_SQ pydicom/tests/test_filereader.py::TestReader::test_specific_tags_with_unknown_length_tag pydicom/tests/test_filereader.py::TestReader::test_tag_with_unknown_length_tag_too_short pydicom/tests/test_filereader.py::TestReader::test_private_SQ pydicom/tests/test_filereader.py::TestReader::test_nested_private_SQ pydicom/tests/test_filereader.py::TestReader::test_no_meta_group_length pydicom/tests/test_filereader.py::TestReader::test_no_transfer_syntax_in_meta pydicom/tests/test_filereader.py::TestReader::test_explicit_VR_little_endian_no_meta pydicom/tests/test_filereader.py::TestReader::test_explicit_VR_big_endian_no_meta pydicom/tests/test_filereader.py::TestReader::test_planar_config pydicom/tests/test_filereader.py::TestReader::test_correct_ambiguous_vr pydicom/tests/test_filereader.py::TestReader::test_correct_ambiguous_explicit_vr pydicom/tests/test_filereader.py::TestReader::test_correct_ambiguous_vr_compressed pydicom/tests/test_filereader.py::TestReader::test_no_preamble_file_meta_dataset pydicom/tests/test_filereader.py::TestReader::test_no_preamble_command_group_dataset pydicom/tests/test_filereader.py::TestReader::test_group_length_wrong pydicom/tests/test_filereader.py::TestReader::test_preamble_command_meta_no_dataset pydicom/tests/test_filereader.py::TestReader::test_preamble_meta_no_dataset pydicom/tests/test_filereader.py::TestReader::test_preamble_commandset_no_dataset pydicom/tests/test_filereader.py::TestReader::test_meta_no_dataset pydicom/tests/test_filereader.py::TestReader::test_commandset_no_dataset pydicom/tests/test_filereader.py::TestReader::test_no_dataset pydicom/tests/test_filereader.py::TestReader::test_empty_file pydicom/tests/test_filereader.py::TestReader::test_dcmread_does_not_raise pydicom/tests/test_filereader.py::TestReader::test_lut_descriptor pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[\x00A-0x00 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[@A-0x40 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[[A-0x5b pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[`A-0x60 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[{A-0x7b pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[\xffA-0xff pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[A\x00-0x41 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[Z\x00-0x5a pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[a\x00-0x61 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[z\x00-0x7a pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[\x00Z-0x00 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[\x00a-0x00 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[\x00z-0x00 pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[AA-AA] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[AZ-AZ] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[ZA-ZA] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[ZZ-ZZ] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[Aa-Aa] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[Az-Az] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[aA-aA] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[aZ-aZ] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[aa-aa] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[az-az] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[Za-Za] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[Zz-Zz] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[zA-zA] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[zZ-zZ] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[za-za] pydicom/tests/test_filereader.py::TestUnknownVR::test_fail_decode_msg[zz-zz] pydicom/tests/test_filereader.py::TestDeferredRead::test_zipped_deferred pydicom/tests/test_filereader.py::TestDeferredRead::test_filelike_deferred pydicom/tests/test_filereader.py::TestReadTruncatedFile::testReadFileWithMissingPixelData pydicom/tests/test_filereader.py::TestReadTruncatedFile::testReadFileWithMissingPixelDataArray pydicom/tests/test_filereader.py::TestFileLike::test_read_file_given_file_object pydicom/tests/test_filereader.py::TestFileLike::test_read_file_given_file_like_object pydicom/tests/test_filereader.py::TestDataElementGenerator::test_little_endian_explicit pydicom/tests/test_filereader.py::TestDataElementGenerator::test_little_endian_implicit pydicom/tests/test_filereader.py::TestDataElementGenerator::test_big_endian_explicit
doc/release_notes/v1.4.0.rst pydicom/filereader.py
doc/release_notes/v1.4.0.rst pydicom/filereader.py