nmtoken is right, you need to request capabilities from the server. In your case you just need to add `gkt` (key) parameter with valid key value to the request: https://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.nib_utm32_wmts_v2?REQUEST=GetCapabilities&service=WMTS&gkt=gkt_value I sneaked gkt key from https://www.norgeskart.no/ site and got the following values (excerpt from GetCapabilities reply): <ows:Identifier>Nibcache_UTM32_EUREF89_v2</ows:Identifier> <ows:BoundingBox crs="urn:ogc:def:crs:EPSG::25832"> <ows:LowerCorner>-2000000.0 3500000.0</ows:LowerCorner> <ows:UpperCorner>3545984.0 9045984.0</ows:UpperCorner> </ows:BoundingBox> In your case origin (upper left corner) would be: origin: [-2500000.0, 9045984.0] And by the way, I never was able to get WMTS plugin to work correctly togeteher with proj4leaflet. I constructed WMTS tile request myself. In your case it would be something like: var gkt = 'gkt_value'; var url = 'http://gatekeeper{s}.geonorge.no/BaatGatekeeper/gk/gk.nib_utm33_wmts_v2?&gkt=' + gkt +'&layer=Nibcache_UTM33_EUREF89&style=default&tilematrixset=default028mm&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix={z}&TileCol={x}&TileRow={y}'; var map = new L.TileLayer(url, { subdomains: ['1', '2', '3'], maxZoom: 16, minZoom: 0, attribution: '' });