By receiving Global Navigation Satellite System (GNSS) signals that are reflected off the sea surface, together with directly received GNSS signals (using standard geodetic-type receivers), it is possible to monitor the sea level using regular single difference geodetic processing. We show results from our analysis of three months of data from the GNSS-based tide gauge at the Onsala Space Observatory (OSO) on the west coast of Sweden. The GNSS-derived time series of local sea level is compared with independent data from two stilling well gauges at Ringhals and Gothenburg about 18 km south and 33 km north of OSO, respectively. A high degree of agreement is found in the time domain, with correlation coefficients of up to 0.96. The root-mean-square differences between the GNSS-derived sea level and the stilling well gauge observations are 5.9 cm and 5.5 cm, which is lower than for the stilling well gauges together (6.1 cm). A frequency domain comparison reveals high coherence of the data sets up to 6 cycles per day, which corresponds well to the propagation of gravity waves in the shallow waters at the Kattegat coast. Amplitudes and phases of some major tides were determined by a tidal harmonic analysis and compared to model predictions. From the GNSS-based tide gauge results we find significant ocean tidal signals at fortnightly, diurnal, semi-diurnal, and quarter-diurnal periods. As an example, the amplitudes of the semi-diurnal M2 and the diurnal O1 tide are determined with 1σ uncertainties of 11 mm and 12 mm, respectively. The comparison to model calculations shows that global ocean tide models have limited accuracy in the Kattegat area.