diff --git a/parfive/downloader.py b/parfive/downloader.py
index 90e7f52..0c13d2d 100644
--- a/parfive/downloader.py
+++ b/parfive/downloader.py
@@ -89,6 +89,14 @@ class Downloader:
             self.http_tokens.put_nowait(Token(i + 1))
             self.ftp_tokens.put_nowait(Token(i + 1))
 
+    @property
+    def queued_downloads(self):
+        """
+        The total number of files already queued for download.
+        """
+
+        return self.http_queue.qsize() + self.ftp_queue.qsize()
+
     def enqueue_file(self, url, path=None, filename=None, overwrite=None, **kwargs):
         """
         Add a file to the download queue.

Way to find number of queued files
It would be nice if `Downloader` could have an attribute that is the number of files queued for download. (just starting to play with this for HelioPy)
diff --git a/parfive/tests/test_downloader.py b/parfive/tests/test_downloader.py
index c8c07ac..e134c79 100644
--- a/parfive/tests/test_downloader.py
+++ b/parfive/tests/test_downloader.py
@@ -26,6 +26,9 @@ def test_download(event_loop, httpserver, tmpdir):
     dl = Downloader(loop=event_loop)
 
     dl.enqueue_file(httpserver.url, path=Path(tmpdir))
+
+    assert dl.queued_downloads == 1
+
     f = dl.download()
 
     assert len(f) == 1
@@ -314,6 +317,9 @@ def test_ftp_http(tmpdir, httpserver):
     dl.enqueue_file(httpserver.url, path=tmpdir)
     dl.enqueue_file("http://noaurl.notadomain/noafile", path=tmpdir)
 
+
+    assert dl.queued_downloads == 6
+
     f = dl.download()
     assert len(f) == 2
     assert len(f.errors) == 4

pip install -e .[ftp]
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-localserver pytest-asyncio pytest-socket
apt-get update apt-get install -y gcc
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
aioftp==0.16.1
aiohttp==3.8.6
aiosignal==1.2.0
async-timeout==4.0.2
asynctest==0.13.0
attrs==22.2.0
certifi==2021.5.30
charset-normalizer==3.0.1
coverage==6.2
dataclasses==0.8
frozenlist==1.2.0
idna==3.10
idna-ssl==1.1.0
importlib-metadata==4.8.3
importlib-resources==5.4.0
iniconfig==1.1.1
multidict==5.2.0
packaging==21.3
-e git+https://github.com/Cadair/parfive.git@349aeab485279d5156500e87654ffff5c3fbbe63#egg=parfive
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
pytest-asyncio==0.16.0
pytest-cov==4.0.0
pytest-localserver==0.9.0.post0
pytest-socket==0.4.1
tomli==1.2.3
tqdm==4.64.1
typing_extensions==4.1.1
Werkzeug==2.0.3
yarl==1.7.2
zipp==3.6.0

name: parfive
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
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - 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=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - aioftp==0.16.1
      - aiohttp==3.8.6
      - aiosignal==1.2.0
      - async-timeout==4.0.2
      - asynctest==0.13.0
      - attrs==22.2.0
      - charset-normalizer==3.0.1
      - coverage==6.2
      - dataclasses==0.8
      - frozenlist==1.2.0
      - idna==3.10
      - idna-ssl==1.1.0
      - importlib-metadata==4.8.3
      - importlib-resources==5.4.0
      - iniconfig==1.1.1
      - multidict==5.2.0
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-asyncio==0.16.0
      - pytest-cov==4.0.0
      - pytest-localserver==0.9.0.post0
      - pytest-socket==0.4.1
      - tomli==1.2.3
      - tqdm==4.64.1
      - typing-extensions==4.1.1
      - werkzeug==2.0.3
      - yarl==1.7.2
      - zipp==3.6.0
prefix: /opt/conda/envs/parfive

parfive/tests/test_downloader.py::test_download parfive/tests/test_downloader.py::test_ftp_http
parfive/tests/test_downloader.py::test_setup parfive/tests/test_downloader.py::test_download_partial parfive/tests/test_downloader.py::test_empty_download parfive/tests/test_downloader.py::test_download_filename parfive/tests/test_downloader.py::test_download_no_overwrite parfive/tests/test_downloader.py::test_download_overwrite parfive/tests/test_downloader.py::test_download_unique parfive/tests/test_downloader.py::test_retrieve_some_content parfive/tests/test_downloader.py::test_no_progress parfive/tests/test_downloader.py::test_raises_other_exception parfive/tests/test_downloader.py::test_token parfive/tests/test_downloader.py::test_failed_download parfive/tests/test_downloader.py::test_results parfive/tests/test_downloader.py::test_notaurl parfive/tests/test_downloader.py::test_retry parfive/tests/test_downloader.py::test_empty_retry parfive/tests/test_downloader.py::test_ftp
parfive/downloader.py
parfive/downloader.py