Sông Tiên Yên bắt nguồn từ đỉnh Cao Ba Lanh chảy theo hướng bắc sang Trung Quốc, sau chuyển hướng tây tây nam đổ vào xã Đồng Văn, huyện Bình Liêu, tỉnh Quảng Ninh.
Đến đây, sông chạy theo hướng tây nam, phân chia đường biên giới tự nhiên giữa Việt Nam - Trung Quốc. Đến Hoành Mô thì đổi hướng bắc nam, chảy qua thị trấn Bình Liêu, hợp với một nhánh sông nữa đổ vào và chảy xuôi xuống huyện Tiên Yên.
Trong hành trình rong ruổi của mình, sông Tiên Yên như làm duyên với núi rừng. Từ Bình Liêu xuống Tiên Yên, con sông này lúc bên trái, lúc bên phải. Sông Tiên Yên có tổng chiều dài khoảng 82km. Trong đó, đoạn từ Cao Ba Lanh - Trung Quốc - Đồng Văn dài 14km. Đoạn từ Hoành Mô đến thị trấn Tiên Yên dài 58km. Đoạn từ Tiên Yên đến cảng Mũi Chùa dài 10km.
Núi rừng cũng đã tạo ra hai chi lưu của con sông Tiên Yên. Một dòng từ Cao Ba Lanh, huyện Bình Liêu chảy xuống. Một dòng từ núi rừng Đình Lập chảy về sông Phố Cũ nay gọi là sông Khe Tiên. Thị trấn Tiên Yên nằm trọn trong vùng hợp lưu của hai nhánh sông này.
Cũng chính vì địa hình chia cắt như thế nên xa xưa, giao thông chủ yếu ở Tiên Yên là đường thủy. Sự ngặt nghèo về giao thông đã khiến mảnh đất này trở nên hiểm trở, được sử cũ gọi là đất "ô châu ác địa", nơi lưu đày những người có tội, những quan lại bị thất sủng.
Cũng chính nhờ vị trí giao thoa, hợp lưu của sông nước nên từ rất sớm, Tiên Yên đã trở thành một điểm thương mại quan trọng. Đây là nơi mà các sản vật núi rừng Đông Bắc được tập kết, chuyển tới thương cảng Vân Đồn. Ngược lại, Tiên Yên cũng là nơi chuyển giao thủy hải sản giàu có của vùng biển Đông Bắc cho các tỉnh núi rừng Cao - Bắc - Lạng.
Đầu thế kỷ trước, khi đi lại còn khó khăn, ở Tiên Yên đã có hai bến phà nối liền thông thương giữa thị trấn Tiên Yên với Tiên Lãng tại bến Châu và với Khe Tù tại bến Khe Tù.
Tuy chỉ là bến phà kéo tay nhưng cũng đã được coi là sự mở mang cần thiết để thị trấn thoát khỏi sự cô lập từ hai con sông Phố Cũ và sông Tiên Yên đối với các khu vực miền Đông và miền Tây của tỉnh Hải Ninh xưa, nối liền các trục đường chiến lược từ Hòn Gai, Lạng Sơn, Bình Liêu, Đầm Hà và Móng Cái.
Sông có độ dốc lớn, lưu lượng và lưu tốc rất khác biệt giữa hai mùa. Mùa đông, sông cạn trơ ghềnh đá, mùa hạ đến sông lại ào ào thác lũ, nước sông dâng rất nhanh. Theo Báo Quảng Ninh, trong một khảo sát, mùa đông lưu lượng nước chỉ là 1,45m3/giây thì mùa mưa lên đến 1.500m3/giây, chênh lệch nhau đến 1.000 lần.
Nếu nhìn từ trên cao xuống, con sông Tiên Yên có hình dạng đặc biệt hệt như chiếc lông chim khổng lồ. Cùng với sông Ka Long, sông Ba Chẽ và sông Bạch Đằng thì sông Tiên Yên được coi là một trong bốn con sông lớn nhất của tỉnh Quảng Ninh.