Xã có diện tích 129,78 km², dân số năm 2011 là 5.129 người[2], mật độ dân số đạt 40 người/km².
Hành chính
Xã Thượng Lâm được chia thành các thôn xóm: Nà Liềm, Nà Bản, Bản Bó, Nà Ta, Nà Lung, Khao Đao, Nà Va, Nà Tông, Nà Thuôn, Nà Đông, Nà Lầu, Bản Chợ, Cốc Phát và Khun Hon.
Ngày 25 tháng 1 năm 2006, Chính phủ ban hành Nghị định số 14/2006/NĐ-CP[3]. Theo đó, điều chỉnh 5.946 ha diện tích tự nhiên của xã Xuân Tiến vừa giải thể, 3.048 ha diện tích tự nhiên và 545 người của xã Trùng Khánh vừa giải thể về xã Thượng Lâm quản lý.
Sau khi điều chỉnh, xã Thượng Lâm có 14.256 ha diện tích tự nhiên và 4.305 người.
Ngày 28 tháng 1 năm 2011, Chính phủ ban hành Nghị quyết số 07/NQ-CP[2]. Theo đó, chuyển toàn bộ 12.977,80 ha diện tích tự nhiên và 5.129 người của xã Thượng Lâm về huyện Lâm Bình mới thành lập.