The oldest surviving parts of the church are the chancel with its apse, the east tower, and roughly two-thirds of the nave, all built of grey stone in the late 1100s. The chancel ceiling is thought to have been vaulted from the start, while the nave originally had a flat wooden ceiling; vaults were not added there until the early fifteenth century. Around 1450 the nave was extended westwards, and a porch was added on its south side towards the end of that century. The sacristy may date from around the same time, since it shares the same style of vaulting as the porch, though it is possible the sacristy itself is somewhat older.
In 1633 a brick burial chapel was added on the south side of the nave, commissioned by Ebba Oxenstierna in memory of her husband Johan Sparre. Its sandstone gable is divided by columns and pilasters, with a memorial tablet flanked by figures said to represent Faith and Hope.
The tower acquired its present spire in the first half of the nineteenth century. The church bells originally hung within the tower itself, and holes for the bell ropes can still be seen in the tower vault. A freestanding wooden bell tower was built just west of the church in the seventeenth century, later given its current appearance in 1804.
Inside, wall paintings were added in three phases between about 1300 and 1450, including decorative borders and a central flower motif uncovered in the chancel vault during restoration work in the twentieth century. Among the older fittings is a sandstone font, possibly from the thirteenth century, though its exact date is uncertain. A sixteenth-century oil painting attributed to the Netherlandish painter Martin de Vos hangs on the north wall, and the pulpit, dating from the early seventeenth century, originally stood in the chapel of nearby Rosersberg Palace before being given to the church in 1774.