Sông Mã bắt nguồn từ dãy núi Bon Kho thuộc huyện Tuần Giáo (tỉnh Điện Biên), chảy theo hướng tây bắc – đông nam qua huyện Sông Mã (tỉnh Sơn La), các huyện Mường Ết, Xiềng Khọ, Sốp Bau (tỉnh Hủa Phăn – Lào), huyện Mường Lát (tỉnh Thanh Hóa), huyện Mai Châu (tỉnh Hòa Bình), các huyện của tỉnh Thanh Hóa:
Quan Hóa, Bá Thước, Cẩm Thủy, Vĩnh Lộc, Yên Định, Thiệu Hóa, TP Thanh Hóa, Hoằng Hóa, Quảng Xương, thị xã Sầm Sơn… rồi đổ ra ở dòng chính là sông Mã (cửa Hới – Lạch Trào) cùng hai phân lưu là sông Tào (cửa Lạch Trường) và sông Lèn (cửa Lèn – Lạch Sung).
Sông Mã có tổng chiều dài 512 km, trong đó đoạn chảy trên tỉnh Điện Biên dài 58 km (11%), đoạn chảy qua tỉnh Sơn La dài 82 km (16%), đoạn chảy qua tỉnh Hủa Phăn (Lào) dài 102 km (20%), đoạn chảy qua tỉnh Thanh Hóa dài 270 km (53%). Diện tích lưu vực sông Mã là 28.400 km2, phía bắc lưu vực sông Mã giáp lưu vực sông Đà và sông Bôi, phía tây là lưu vực sông Mê Kông, phía nam là lưu vực sông Hiếu và sông Yên, phía đông là biển Đông. Trong 28.400 km2 diện tích của lưu vực sông Mã, phần diện tích của các địa bàn như sau: tỉnh Điện Biên: 2.150 km2 (7,5%), tỉnh Sơn La: 4.600 km2 (16,2%), tỉnh Hủa Phăn (Lào): 10.310 km2 (36,3%), tỉnh Hòa Bình: 1.790 km2 (6,3%), tỉnh Thanh Hóa: 8.900 km2 (31,3%), tỉnh Nghệ An: 650 km2 (2,28%).
Hệ thống sông Mã có 90 sông nhánh: 40 sông nhánh cấp I; 33 nhánh sông cấp II; 16 nhánh sông cấp III; và 1 nhánh sông cấp IV. Trong 40 sông nhánh cấp I có 5 sông diện tích lưu vực từ 1.000 km2 trở lên là: Nậm Khoai, Nậm Lương (sông Luồng), sông Lò, sông Bưởi và sông Chu. Tổng lượng nước của hệ thống sông Mã là 20,1 km3/năm.
Sử cũ gọi là sông Lỗi Giang; ngoài ra còn có nhiều tên gọi khác như sông Tất Mã, Lễ, Định Minh, Nguyệt Thường, Hội Thường. Cũng giống như nhiều dòng sông khác của Việt Nam, có rất nhiều cách giải thích khác nhau về tên gọi của sông Mã:
Cách giải thích thứ nhất: Người Kinh ở vùng đồng bằng Thanh Hóa cho rằng “Mã” là một từ Hán – Việt có nghĩa là “Ngựa”. Sông có tên gọi “Mã” vì dòng nước chảy xiết, nhanh và mạnh như ngựa phi, và “sông Mã” có nghĩa là “sông Ngựa”.
Cách giải thích thứ hai: Sông Mã có nghĩa là “sông Mẹ”. Mạ trong tiếng Việt xưa (nay còn lưu lại trong phương ngữ miền Trung) vốn có nghĩa là “Mẹ”. Những con sông lớn ở vùng Đông Nam Á thường được gọi cái tên có nghĩa “Mẹ”. Ví dụ: tiếng Việt có sông Cái, rào Cái = sông Mẹ; tiếng Thái Lan có Menam = sông Mẹ; tiếng Mông cổ có Meklong = sông Mẹ.
Vậy tên gọi sông Mã không ngoài quy luật đặt địa danh nêu trên trong toàn vùng, có nghĩa sông Mã = sông Mạ = sông Cái (nghĩa là “sông Mẹ”).
Cách giải thích thứ ba: Người Thái ở xã Mường Lèo và một số vùng khác thuộc huyện Sốp Cộp và huyện Sông Mã (tỉnh Sơn La) gọi tên của sông là “Nậm Mạ”. Cách gọi này xuất phát từ việc ở đầu nguồn của sông có nhiều cây “Pháp mạ” (rau mạ) nên đã lấy tên của loại rau đặt tên cho con sông là “Nậm Mạ” (sông cây rau mạ).
Có thể thấy kiểu đặt tên sông hoặc địa danh như vậy khá phổ biến trong vùng người Thái cư trú ở khu vực Tây Bắc Việt Nam. Ví dụ: “Nậm Rốm” thì “Rốm” (chính xác “Rôm” là “cây Lát”; “Nậm Rốm” có nghĩa là “sông cây Lát”. Hồ “Pa Khoang” thì “Pa” (chính xác “Pà”) là “rừng”, còn “Khoang” là “cây Trúc”; hồ “Pa Khoang” có nghĩa là hồ “rừng Trúc”. Ngã ba “Pa Háng” thì “Háng” là “cây Dang”; ngã ba “Pa Háng” có nghĩa là ngã ba “cây Dang”. Dốc “Pù Pa vai” thì “Pù” là “Núi”, “Pa vai” là “cây Mây”; Dốc “Pù Pa vai” có nghĩa là dốc “núi cây Mây”. Sông Hồng đoạn chảy qua tỉnh Phú Thọ được gọi là “sông Thao”, có nguồn gốc từ ngôn ngữ Tày – Thái cổ: “Nậm Tao”. Người Việt ảnh hưởng cách gọi này nên đã đặt tên là “sông Thao”. Hoặc bản “Co Cài” có nghĩa là bản “Cây Đào”…
Cách giải thích thứ tư: Các tộc người Lào và Phu Thay ở một số vùng thuộc các huyện Mường Ết, Xiềng Khọ, Sốp Bau của tỉnh Hủa Phăn (Lào) gọi tên của sông là “Nậm Má”. Trong ngôn ngữ của cư dân vùng này thì “Nậm” là “nước”, “Má” là “dâng cao”. “Nậm Má” có nghĩa là nước của dòng sông hay dâng cao tràn bờ và gây lũ lụt vào mùa mưa.
Sông Mã bắt nguồn từ không gian văn hóa Thái và chảy qua 4 không gian văn hóa Thái, Lào, Mường, Việt. Trong đó văn hóa Việt chịu nhiều ảnh hưởng và tác động của Nho giáo, Đạo giáo (dù không sâu đậm như vùng đồng bằng sông Hồng)…; văn hóa Lào chịu nhiều ảnh hưởng của Phật giáo (dù không sâu đậm như vùng dọc theo sông Mê Kông); văn hóa Thái và Mường hầu như không bị tác động của các yếu tố trên. Có thể nói đây là khu vực “phi Hoa, phi Ấn”! Vậy mà cả 4 tộc người (4 giá trị văn hóa) đều gọi tên là sông Mã. Vấn đề đặt ra là tộc người nào gọi tên sông Mã đầu tiên để tộc người khác bị ảnh hưởng, hay là sự trùng hợp ngẫu nhiên trong cách đặt tên sông của các tộc người?
Từ những nội dung đã phân tích, tôi cho rằng cách giải thích thứ nhất là cảm tính, suy diễn, thiếu cơ sở thực tiễn; còn 3 cách giải thích sau đều căn cứ vào ngôn ngữ và văn hóa của cư dân trong không gian sinh tồn nơi dòng sông chảy qua. Mặc dù nghĩa của từ “mạ”, “má” khác nhau nhưng khi phát âm lại tương đối giống nhau, đặc biệt là khi viết theo chữ cái la tinh đều có phụ âm “m” và nguyên âm “a”. Do vậy, các tộc người gọi tên sông theo cách của mình và chấp nhận cách gọi tên sông của tộc người khác, tất cả đều gọi là sông Mã.