Table of contents
If you've browsed MDN recently, you may have noticed some Web API
types with really long names, including such bangers as
ReadableStreamDefaultReader
and
FileSystemWritableFileStream
. If you've ever thought "I
wonder what the longest one is", you're in luck — this is exactly what
this post is about.
The names
Section titled 'The names'50+ characters
Section titled '50+ characters'InterestGroupBiddingAndScoringScriptRunnerGlobalScope
WEBGL_multi_draw_instanced_base_vertex_base_instance
40+ characters
Section titled '40+ characters'WEBGL_draw_instanced_base_vertex_base_instance
RunFunctionForSharedStorageSelectURLOperation
InterestGroupReportingScriptRunnerGlobalScope
WindowControlsOverlayGeometryChangeEventInit
InterestGroupBiddingScriptRunnerGlobalScope
InterestGroupScoringScriptRunnerGlobalScope
ContentVisibilityAutoStateChangeEventInit
TopLevelStorageAccessPermissionDescriptor
ProtectedAudiencePrivateAggregationConfig
AuthenticationExtensionsClientOutputsJSON
PresentationConnectionAvailableEventInit
PrivateNetworkAccessPermissionDescriptor
AuthenticationExtensionsClientInputsJSON
AuthenticationExtensionsLargeBlobOutputs
WindowControlsOverlayGeometryChangeEvent
30+ characters
Section titled '30+ characters'SecurityPolicyViolationEventDisposition
IdentityCredentialRequestOptionsContext
MediaCapabilitiesKeySystemConfiguration
SanitizerElementNamespaceWithAttributes
AuthenticationExtensionsLargeBlobInputs
MLQuantizeDequantizeLinearSupportLimits
WEBGL_blend_equation_advanced_coherent
OrientationSensorLocalCoordinateSystem
SharedStorageRunOperationMethodOptions
PublicKeyCredentialCreationOptionsJSON
XRSessionSupportedPermissionDescriptor
ContentVisibilityAutoStateChangeEvent
AuthenticationExtensionsClientOutputs
NavigationCurrentEntryChangeEventInit
PrivateAttributionAggregationServices
SecurePaymentConfirmationAvailability
AuthenticationExtensionsPaymentInputs
SharedStoragePrivateAggregationConfig
HTMLSharedStorageWritableElementUtils
PublicKeyCredentialClientCapabilities
PublicKeyCredentialRequestOptionsJSON
IdentityCredentialRequestOptionsMode
AuthenticationExtensionsClientInputs
FileSystemHandlePermissionDescriptor
SVGFilterPrimitiveStandardAttributes
MockCapturePromptResultConfiguration
PermissionsPolicyViolationReportBody
PrivateAttributionAggregationService
PresentationConnectionAvailableEvent
PresentationConnectionCloseEventInit
CollectedClientAdditionalPaymentData
InterestGroupScriptRunnerGlobalScope
AuthenticatorAttestationResponseJSON
MLConvTranspose2dFilterOperandLayout
IdentityCredentialDisconnectOptions
SVGComponentTransferFunctionElement
ImageBitmapRenderingContextSettings
NavigationUpdateCurrentEntryOptions
PerformanceLongAnimationFrameTiming
PrivateAttributionImpressionOptions
PrivateAttributionConversionOptions
ReadableStreamBYOBReaderReadOptions
BluetoothLEScanPermissionDescriptor
BluetoothManufacturerDataFilterInit
GPURenderPassDepthStencilAttachment
WEBGL_compressed_texture_s3tc_srgb
AccelerometerLocalCoordinateSystem
AttributionReportingRequestOptions
PerformanceObserverCallbackOptions
PrivateAttributionConversionResult
RemotePlaybackAvailabilityCallback
SharedStorageModifierMethodOptions
MediaStreamTrackAudioSourceOptions
AuthenticatorAssertionResponseJSON
PublicKeyCredentialCreationOptions
AuthenticationExtensionsPRFOutputs
RTCPeerConnectionIceErrorEventInit
XRTransientInputHitTestOptionsInit
FederatedCredentialRequestOptions
DocumentPictureInPictureEventInit
OffscreenCanvasRenderingContext2D
NavigationCurrentEntryChangeEvent
OnBeforeUnloadEventHandlerNonNull
MagnetometerLocalCoordinateSystem
DeviceMotionEventAccelerationInit
DeviceMotionEventRotationRateInit
PresentationConnectionCloseReason
AuctionReportBuyerDebugModeConfig
BluetoothRemoteGATTCharacteristic
BluetoothCharacteristicProperties
PublicKeyCredentialUserEntityJSON
PublicKeyCredentialDescriptorJSON
PublicKeyCredentialRequestOptions
AuthenticationExtensionsPRFValues
AuthenticationExtensionsPRFInputs
MLBatchNormalizationSupportLimits
SecurityPolicyViolationEventInit
IdentityCredentialRequestOptions
HandwritingRecognizerQueryResult
CanvasRenderingContext2DSettings
CameraDevicePermissionDescriptor
PresentationConnectionCloseEvent
SecurePaymentConfirmationRequest
TransformStreamDefaultController
DirectFromSellerSignalsForSeller
AudioWorkletProcessorConstructor
AuthenticatorAttestationResponse
VideoEncoderEncodeOptionsForHevc
GPURenderBundleEncoderDescriptor
WebTransportDatagramDuplexStream
EXT_disjoint_timer_query_webgl2
ExtendableCookieChangeEventInit
PaintRenderingContext2DSettings
DigitalCredentialRequestOptions
DocumentPictureInPictureOptions
FileSystemCreateWritableOptions
ObservableInspectorAbortHandler
PushSubscriptionChangeEventInit
SharedStorageWorkletGlobalScope
SpeechRecognitionErrorEventInit
ReadableStreamDefaultController
WritableStreamDefaultController
PAExtendedHistogramContribution
DirectFromSellerSignalsForBuyer
BluetoothManufacturerDataFilter
BluetoothLEScanPermissionResult
OfflineAudioCompletionEventInit
MediaStreamAudioDestinationNode
MediaStreamTrackAudioSourceNode
AttestationConveyancePreference
VideoEncoderEncodeOptionsForAv1
VideoEncoderEncodeOptionsForAvc
VideoEncoderEncodeOptionsForVp9
EncodedAudioChunkOutputCallback
EncodedVideoChunkOutputCallback
WebGL2RenderingContextOverloads
GPUExternalTextureBindingLayout
RTCRemoteOutboundRtpStreamStats
RTCRtpHeaderExtensionParameters
RTCRtpHeaderExtensionCapability
WebTransportBidirectionalStream
USBIsochronousOutTransferPacket
USBIsochronousOutTransferResult
EXT_texture_filter_anisotropic
SVGAnimatedPreserveAspectRatio
WEBGL_compressed_texture_pvrtc
HTMLAttributionSrcElementUtils
CredentialMediationRequirement
SpatialNavigationSearchOptions
CharacterBoundsUpdateEventInit
BrowserCaptureMediaStreamTrack
IdentityProviderRequestOptions
IdentityProviderClientMetadata
FileSystemPermissionDescriptor
GyroscopeLocalCoordinateSystem
MediaTrackSupportedConstraints
MockCaptureDeviceConfiguration
NotificationPermissionCallback
ObservableSubscriptionCallback
ObservableEventListenerOptions
SanitizerElementWithAttributes
SurfaceSwitchingPreferenceEnum
ReadableStreamGetReaderOptions
UnderlyingSourceCancelCallback
AuctionRealTimeReportingConfig
BluetoothServiceDataFilterInit
AudioContextRenderSizeCategory
MediaElementAudioSourceOptions
AuthenticatorAssertionResponse
AuthenticatorSelectionCriteria
NavigatorAutomationInformation
WebGLRenderingContextOverloads
GPUStorageTextureBindingLayout
GPUShaderModuleCompilationHint
GPUCopyExternalImageSourceInfo
MLInstanceNormalizationOptions
RTCIdentityProviderGlobalScope
RTCRemoteInboundRtpStreamStats
RTCPeerConnectionErrorCallback
RTCLocalSessionDescriptionInit
RTCPeerConnectionIceErrorEvent
WebTransportReceiveStreamStats
USBIsochronousInTransferPacket
USBIsochronousInTransferResult
25+ characters
Section titled '25+ characters'OES_texture_half_float_linear
WEBGL_compressed_texture_astc
WEBGL_compressed_texture_etc1
WEBGL_compressed_texture_s3tc
ClipboardPermissionDescriptor
CaretPositionFromPointOptions
DocumentPictureInPictureEvent
MediaKeySystemMediaCapability
SVGFEComponentTransferElement
FileSystemGetDirectoryOptions
IntersectionObserverEntryInit
MediaCapabilitiesDecodingInfo
MediaCapabilitiesEncodingInfo
CanvasCaptureMediaStreamTrack
MediaStreamTrackProcessorInit
DeviceMotionEventAcceleration
DeviceMotionEventRotationRate
PaymentRequestUpdateEventInit
SharedStorageSetMethodOptions
SharedStorageWorkletNavigator
SpeechSynthesisErrorEventInit
ReadableStreamIteratorOptions
UnderlyingSourceStartCallback
WebAssemblyInstantiatedSource
BluetoothPermissionDescriptor
BluetoothAdvertisingEventInit
BluetoothRemoteGATTDescriptor
MediaStreamAudioSourceOptions
AllAcceptedCredentialsOptions
PublicKeyCredentialParameters
PublicKeyCredentialUserEntity
PublicKeyCredentialDescriptor
GPUComputePassTimestampWrites
SFrameTransformErrorEventType
SFrameTransformErrorEventInit
RTCStatsIceCandidatePairState
RTCSessionDescriptionCallback
RTCIceServerTransportProtocol
RTCPeerConnectionIceEventInit
WebTransportDatagramsWritable
WebTransportCongestionControl
WebTransportSendStreamOptions
XRTransientInputHitTestSource
XRTransientInputHitTestResult
XRInputSourcesChangeEventInit
SecurityPolicyViolationEvent
EXT_texture_compression_bptc
EXT_texture_compression_rgtc
WEBGL_compressed_texture_etc
BackgroundFetchFailureReason
BackgroundFetchUpdateUIEvent
ScriptingPolicyViolationType
ViewTransitionUpdateCallback
SVGFESpecularLightingElement
FileSystemWritableFileStream
IntersectionObserverCallback
ConstrainDOMStringParameters
PaymentMethodChangeEventInit
PerformanceObserverEntryList
GenerateTestReportParameters
SharedStorageUrlWithMetadata
SpeechRecognitionAlternative
UnderlyingSourcePullCallback
ReadableByteStreamController
TransformerTransformCallback
BluetoothManufacturerDataMap
BluetoothDeviceEventHandlers
VideoTransferCharacteristics
GPUExternalTextureDescriptor
GPUBindGroupLayoutDescriptor
GPUComputePipelineDescriptor
GPUCopyExternalImageDestInfo
GPURenderPassTimestampWrites
GPURenderPassColorAttachment
MLRecurrentNetworkActivation
MLNormalizationSupportLimits
RTCEncodedVideoFrameMetadata
RTCEncodedAudioFrameMetadata
RTCIdentityProviderRegistrar
USBControlTransferParameters
EXT_color_buffer_half_float
KHR_parallel_shader_compile
BackgroundFetchRegistration
ClipboardUnsanitizedFormats
ExtendableCookieChangeEvent
AnimationWorkletGlobalScope
AnimatorInstanceConstructor
IntrinsicSizesResultOptions
TextEncoderEncodeIntoResult
MediaKeySystemConfiguration
MediaKeySessionClosedReason
IdentityProviderAccountList
SVGFEDiffuseLightingElement
SVGFEDisplacementMapElement
HandwritingHintsQueryResult
ImageBitmapRenderingContext
OffscreenRenderingContextId
NavigatorConcurrentHardware
InputDeviceCapabilitiesInit
KeySystemTrackConfiguration
MockMicrophoneConfiguration
PerformanceNavigationTiming
NavigatorNetworkInformation
PaymentRequestDetailsUpdate
PerformanceObserverCallback
PresentationConnectionState
PushSubscriptionOptionsInit
PushSubscriptionChangeEvent
SanitizerAttributeNamespace
TaskPriorityChangeEventInit
PaymentCredentialInstrument
ServiceWorkerUpdateViaCache
SharedStorageModifierMethod
SharedStorageWorkletOptions
SpeechRecognitionErrorEvent
SpeechRecognitionResultList
SpeechRecognitionPhraseList
ReadableStreamGenericReader
ReadableStreamDefaultReader
UnderlyingSinkStartCallback
UnderlyingSinkWriteCallback
UnderlyingSinkCloseCallback
UnderlyingSinkAbortCallback
WritableStreamDefaultWriter
IterationCompositeOperation
BasePropertyIndexedKeyframe
CharacteristicEventHandlers
BluetoothCharacteristicUUID
OTPCredentialRequestOptions
AudioContextLatencyCategory
OfflineAudioCompletionEvent
MediaElementAudioSourceNode
AudioWorkletProcessCallback
PublicKeyCredentialRpEntity
UserVerificationRequirement
GPUPipelineLayoutDescriptor
GPURenderPipelineDescriptor
GPUCommandEncoderDescriptor
GPUUncapturedErrorEventInit
MLBatchNormalizationOptions
MLConv2dFilterOperandLayout
MLRecurrentNetworkDirection
MLLayerNormalizationOptions
RTCEncodedVideoFrameOptions
RTCEncodedAudioFrameOptions
RTCIdentityValidationResult
RTCRtpSynchronizationSource
WebTransportReliabilityMode
WebTransportConnectionStats
WebTransportSendStreamStats
SummarizerCreateCoreOptions
AccelerometerSensorOptions
HighlightsFromPointOptions
SpatialNavigationDirection
StartViewTransitionOptions
CharacterBoundsUpdateEvent
SVGFEConvolveMatrixElement
FileSystemReadWriteOptions
FileSystemSyncAccessHandle
HandwritingModelConstraint
HandwritingRecognitionType
HTMLFormControlsCollection
NavigationInterceptOptions
NavigationInterceptHandler
OnErrorEventHandlerNonNull
OnBeforeUnloadEventHandler
StructuredSerializeOptions
DedicatedWorkerGlobalScope
ConstrainPoint2DParameters
DelegatedInkTrailPresenter
MediaDecodingConfiguration
MediaEncodingConfiguration
ConstrainBooleanParameters
DeviceOrientationEventInit
MemoryAttributionContainer
PrivateAttributionProtocol
PresentationConnectionList
NetworkInformationSaveData
CollectedClientPaymentData
ExtendableMessageEventInit
SpeechRecognitionErrorCode
SpeechRecognitionEventInit
SVGAnimateTransformElement
AuctionAdInterestGroupSize
ProtectedAudienceUtilities
ReportResultBrowserSignals
VideoFrameCallbackMetadata
AnimationPlaybackEventInit
BluetoothServiceDataFilter
BluetoothPermissionStorage
WatchAdvertisementsOptions
BluetoothRemoteGATTService
OTPCredentialTransportType
OfflineAudioContextOptions
MediaStreamAudioSourceNode
AuthenticationResponseJSON
CredentialPropertiesOutput
WebGLShaderPrecisionFormat
WebGL2RenderingContextBase
GPUCopyExternalImageSource
GPUCommandBufferDescriptor
MLSingleInputSupportLimits
RTCIdentityAssertionResult
RTCIdentityProviderDetails
RTCIdentityProviderOptions
RTCQualityLimitationReason
RTCRtpTransceiverDirection
RTCDTMFToneChangeEventInit
SummarizerSummarizeOptions
XMLHttpRequestResponseType
IDBVersionChangeEventInit
WindowOrWorkerGlobalScope
WebGLVertexArrayObjectOES
SVGTextPositioningElement
WEBGL_debug_renderer_info
ServiceWorkerRegistration
CredentialCreationOptions
ScriptingPolicyReportBody
CSSPositionTryDescriptors
CSSVariableReferenceValue
CSSMatrixComponentOptions
TextFormatUpdateEventInit
FileSystemDirectoryReader
FileSystemEntriesCallback
IdentityProviderWellKnown
IdentityProviderAPIConfig
IdentityAssertionResponse
FenceReportingDestination
FileSystemDirectoryHandle
HandwritingDrawingSegment
HTMLHyperlinkElementUtils
OffscreenRenderingContext
NavigationNavigateOptions
NavigationHistoryBehavior
PromiseRejectionEventInit
IntersectionObserverEntry
PerformanceLongTaskTiming
MagnetometerSensorOptions
MediaStreamTrackEventInit
MediaStreamTrackProcessor
MediaSessionPlaybackState
MediaSessionActionHandler
MediaSessionActionDetails
AbsoluteOrientationSensor
RelativeOrientationSensor
PaymentRequestUpdateEvent
PictureInPictureEventInit
ReportingObserverCallback
PerformanceResourceTiming
SanitizerElementNamespace
SchedulerPostTaskCallback
CaptureStartFocusBehavior
SelfCapturePreferenceEnum
SystemAudioPreferenceEnum
DisplayMediaStreamOptions
DisplayCaptureSurfaceType
SharedStorageAppendMethod
SharedStorageDeleteMethod
SpeechSynthesisErrorEvent
ReadableStreamBYOBRequest
TransformerCancelCallback
ByteLengthQueuingStrategy
AuctionAdInterestGroupKey
AuctionReportBuyersConfig
URLPatternComponentResult
PerformanceMeasureOptions
VideoFrameRequestCallback
BluetoothLEScanFilterInit
BluetoothPermissionResult
BluetoothAdvertisingEvent
BluetoothRemoteGATTServer
DynamicsCompressorOptions
CurrentUserDetailsOptions
PublicKeyCredentialEntity
VideoEncoderEncodeOptions
EncodedAudioChunkMetadata
EncodedVideoChunkMetadata
WebGLRenderingContextBase
GPUShaderModuleDescriptor
GPUCompilationMessageType
GPUPipelineDescriptorBase
GPURenderBundleDescriptor
MLLogicalNotSupportLimits
SFrameTransformErrorEvent
GenerateAssertionCallback
ValidateAssertionCallback
RTCReceivedRtpStreamStats
RTCOutboundRtpStreamStats
RTCSessionDescriptionInit
RTCPeerConnectionIceEvent
WebTransportDatagramStats
WebTransportReceiveStream
XRInputSourcesChangeEvent
XRReferenceSpaceEventInit
RewriterCreateCoreOptions
XMLHttpRequestEventTarget
How to reproduce this list
Section titled 'How to reproduce this list'Use the following Node script. It uses the WebIDL definitions from every Web standard to do its job. And yes, I am as surprised as you that they not only have a JavaScript API for this, but it's also all in one place and easy to use.
import idl from "@webref/idl";
const specs = await idl.parseAll();
const asts = Object.values(specs);
const definitions = asts.flat();
const allNames = definitions
.map(definition => definition.name)
.filter(name => name != undefined);
const uniqueNames = Array.from(new Set(allNames))
.toSorted((a, b) => b.length - a.length);
const THRESHOLD = 25;
const longNames = uniqueNames.filter(name => name.length >= THRESHOLD);
const byCharacters = name => Math.floor(name.length / 10) * 10;
const namesByCharacters =
Object.entries(Object.groupBy(longNames, byCharacters))
.map(entry => ({characters: entry[0], names: entry[1]}))
.toSorted((a, b) => b.characters - a.characters);
for (const group of namesByCharacters) {
const characters = group == namesByCharacters.at(-1)
? THRESHOLD
: group.characters;
console.log(`### ${characters}+ characters\n`);
for (const name of group.names) {
console.log(`* \`${name}\``);
}
console.log();
}