Joy-Con is the name for the Switch's primary game controllers. The Joy-Con are internally called Ukyo (Left) and Sakyo (Right).
Hardware
Ukyo
| Component | Description | 
| SoC | Broadcom BCM20734 | 
| IMU | STMicroelectronics LSM6DS3H | 
| PMIC | Texas Instruments BQ24072 | 
| Storage | Macronix International MX25U4033E 4 Mb CMOS Flash | 
Sakyo
| Component | Description | 
| SoC | Broadcom BCM20734 | 
| MCU | STMicroelectronics STM32P411 | 
| NFC | STMicroelectronics ST21NFCB | 
| IMU | STMicroelectronics LSM6DS3H | 
| PMIC | Texas Instruments BQ24072 | 
| Storage | Macronix International MX25U4033E 4 Mb CMOS Flash | 
Protocol
The Joy-Con can communicate wirelessly over Bluetooth or through the rails over UART. The latter uses a Nintendo proprietary protocol called "Nwcp". 
NwcpPacket
This is a 5-byte packet header used by Broadcom's HCI Control Protocol.
| Offset | Size | Description | 
| 0x0 | 0x1 | PacketType (always 0x19) | 
| 0x1 | 0x1 | CommandCode | 
| 0x2 | 0x1 | GroupCode (always 0x03) | 
| 0x3 | 0x2 | PacketLength | 
CommandCode
| Value | Description | 
| 0x1 | SendToDevice | 
| 0x81 | ReceiveFromDevice | 
| Offset | Size | Description | 
| 0x0 | 0x1 | CommandType | 
| 0x1 | 0x1 | DeviceCommand | 
| 0x2 | 0x2 | DataSize | 
| 0x4 | 0x1 | CommandResult | 
| 0x5 | 0x1 | DataCrc (CRC8 over Data for DataSize bytes) | 
| 0x6 | 0x1 | HeaderCrc (CRC8 over the previous 6 bytes) | 
CommandType
| Value | Description | 
| 0x91 | DeviceCommandIn | 
| 0x92 | Hid | 
| 0x93 |  | 
| 0x94 | DeviceCommandOut | 
| 0x95 |  | 
| 0x9A |  | 
| 0xA3 |  | 
| 0xA5 | Handshake | 
HidCommandInputReport
This is a 0x31-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x1 | LatencyTimer | 
| 0x2 | 0x1 | PowerInfo | 
| 0x3 | 0x1 | RightPadButtonStatus | 
| 0x4 | 0x1 | SharedButtonStatus | 
| 0x5 | 0x1 | LeftPadButtonStatus | 
| 0x6 | 0x3 | LeftAnalogStickData | 
| 0x9 | 0x3 | RightAnalogStickData | 
| 0xC | 0x1 | MotorStatus | 
| 0xD | 0x1 | CommandAck | 
| 0xE | 0x1 | CommandId | 
| 0xF | 0x22 | CommandReply | 
HidMcuUpdateInputReport
This is a 0x30-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x1 | LatencyTimer | 
| 0x2 | 0x1 | PowerInfo | 
| 0x3 | 0x1 | RightPadButtonStatus | 
| 0x4 | 0x1 | SharedButtonStatus | 
| 0x5 | 0x1 | LeftPadButtonStatus | 
| 0x6 | 0x3 | LeftAnalogStickData | 
| 0x9 | 0x3 | RightAnalogStickData | 
| 0xC | 0x1 | MotorStatus | 
| 0xD | 0x23 | McuUpdateData | 
HidBasicInputReport
This is a 0x31-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x1 | LatencyTimer | 
| 0x2 | 0x1 | PowerInfo | 
| 0x3 | 0x1 | RightPadButtonStatus | 
| 0x4 | 0x1 | SharedButtonStatus | 
| 0x5 | 0x1 | LeftPadButtonStatus | 
| 0x6 | 0x3 | LeftAnalogStickData | 
| 0x9 | 0x3 | RightAnalogStickData | 
| 0xC | 0x1 | MotorStatus | 
| 0xD | 0x24 | BasicData | 
HidMcuInputReport
This is a 0x16A-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x1 | LatencyTimer | 
| 0x2 | 0x1 | PowerInfo | 
| 0x3 | 0x1 | RightPadButtonStatus | 
| 0x4 | 0x1 | SharedButtonStatus | 
| 0x5 | 0x1 | LeftPadButtonStatus | 
| 0x6 | 0x3 | LeftAnalogStickData | 
| 0x9 | 0x3 | RightAnalogStickData | 
| 0xC | 0x1 | MotorStatus | 
| 0xD | 0x6 | SensorAccelSample0 | 
| 0x13 | 0x6 | SensorGyroSample0 | 
| 0x19 | 0x6 | SensorAccelSample1 | 
| 0x1F | 0x6 | SensorGyroSample1 | 
| 0x25 | 0x6 | SensorAccelSample2 | 
| 0x2B | 0x6 | SensorGyroSample2 | 
| 0x31 | 0x139 | McuData | 
HidAttachmentInputReport
This is a 0x16A-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x1 | LatencyTimer | 
| 0x2 | 0x1 | PowerInfo | 
| 0x3 | 0x1 | RightPadButtonStatus | 
| 0x4 | 0x1 | SharedButtonStatus | 
| 0x5 | 0x1 | LeftPadButtonStatus | 
| 0x6 | 0x3 | LeftAnalogStickData | 
| 0x9 | 0x3 | RightAnalogStickData | 
| 0xC | 0x1 | MotorStatus | 
| 0xD | 0x6 | SensorAccelSample0 | 
| 0x13 | 0x6 | SensorGyroSample0 | 
| 0x19 | 0x6 | SensorAccelSample1 | 
| 0x1F | 0x6 | SensorGyroSample1 | 
| 0x25 | 0x6 | SensorAccelSample2 | 
| 0x2B | 0x6 | SensorGyroSample2 | 
| 0x31 | 0x139 | AttachmentData | 
HidGenericInputReport
This is a 0xC-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x2 | ButtonStatus | 
| 0x3 | 0x1 | StickHatData | 
| 0x4 | 0x4 | LeftAnalogStickData | 
| 0x8 | 0x4 | RightAnalogStickData | 
HidCommandOutputReport
This is a 0x31-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x1 | PacketNumber | 
| 0x2 | 0x8 | MotorData | 
| 0xA | 0x1 | CommandId | 
| 0xB | 0x26 | CommandData | 
HidMcuUpdateOutputReport
This is a 0x13E-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x1 | PacketNumber | 
| 0x2 | 0x8 | MotorData | 
| 0xA | 0x134 | McuUpdateData | 
HidBasicOutputReport
This is a 0xA-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x1 | PacketNumber | 
| 0x2 | 0x8 | MotorData | 
HidMcuOutputReport
This is a 0x30-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x1 | PacketNumber | 
| 0x2 | 0x8 | MotorData | 
| 0xA | 0x26 | McuData | 
HidAttachmentOutputReport
This is a 0x30-byte struct.
| Offset | Size | Description | 
| 0x0 | 0x1 | ReportId | 
| 0x1 | 0x1 | PacketNumber | 
| 0x2 | 0x8 | MotorData | 
| 0xA | 0x26 | AttachmentData | 
HidReportId
| Value | Description | 
| 0x01 | CommandOutputReport | 
| 0x03 | McuUpdateOutputReport | 
| 0x10 | BasicOutputReport | 
| 0x11 | McuOutputReport | 
| 0x12 | AttachmentOutputReport | 
| 0x21 | CommandInputReport | 
| 0x23 | McuUpdateInputReport | 
| 0x30 | BasicInputReport | 
| 0x31 | McuInputReport | 
| 0x32 | AttachmentInputReport | 
| 0x33 |  | 
| 0x3F | GenericInputReport | 
| 0x70 | OtaEnableFwuReport | 
| 0x71 | OtaSetupReadReport | 
| 0x72 | OtaReadReport | 
| 0x73 | OtaWriteReport | 
| 0x74 | OtaEraseReport | 
| 0x75 | OtaLaunchReport | 
| 0x80 | ExtGripOutputReport | 
| 0x81 | ExtGripInputReport | 
| 0x82 |  | 
DeviceCommand
| Value | Description | 
| 0x01 | Inquiry | 
| 0x02 | WriteChargerSettings | 
| 0x03 | ReadChargerSettings | 
| 0x04 | AttachmentEnable | 
| 0x05 | IsAttachmentEnabled | 
| 0x06 | GetBatteryVoltage | 
| 0x07 | ReadWakeUpReason | 
| 0x10 | CreateHidConnection | 
| 0x11 | DisconnectHid | 
| 0x12 | SetHidInterval | 
| 0x13 | GetHidInterval | 
| 0x18 | Pairing | 
| 0x20 | UpdateUartBaudRate | 
| 0x40 | Test | 
HidCommand
| Value | Description | 
| 0x01 | PairingOut | 
| 0x02 | GetDeviceInfo | 
| 0x03 | SetDataFormat | 
| 0x04 | LRButtonDetection | 
| 0x05 | Page | 
| 0x06 | Reset | 
| 0x07 | ClearPairingInfo | 
| 0x08 | Shipment | 
| 0x10 | SerialFlashRead | 
| 0x11 | SerialFlashWrite | 
| 0x12 | SerialFlashSectorErase | 
| 0x20 | McuReset | 
| 0x21 | McuWrite | 
| 0x22 | McuResume | 
| 0x24 | McuPollingEnable | 
| 0x25 | McuPollingDisable | 
| 0x28 | AttachmentWrite | 
| 0x29 | AttachmentRead | 
| 0x2A | AttachmentEnable | 
| 0x2B | GetAttachmentInfo | 
| 0x30 | SetIndicatorLed | 
| 0x31 | GetIndicatorLed | 
| 0x38 | SetNotificationLed | 
| 0x40 | SensorSleep | 
| 0x41 | SensorConfig | 
| 0x42 | SensorWrite | 
| 0x43 | SensorRead | 
| 0x48 | MotorEnable | 
| 0x50 | GetBatteryVoltage | 
| 0x51 | WriteChargeSetting | 
| 0x52 | ReadChargeSetting | 
| 0x58 | ExtDevWrite | 
| 0x59 | GetExtDevInfo | 
| 0x5A | ExtDevPollingEnable | 
| 0x5B | ExtDevPollingDisable | 
| 0x5C | ExtDevInFormatConfig | 
| 0x5D |  | 
| 0x60 | InternalAttachmentWrite | 
| 0x61 |  | 
| 0x62 | InternalAttachmentEnable | 
| 0x63 | InternalAttachmentPollingEnable | 
| 0x64 | InternalAttachmentPollingDisable | 
| 0x7A | AddButtonPlayData | 
| 0x7B | StartStopButtonPlayData | 
| 0x80 | Ack | 
| 0x81 | PairingIn | 
| 0x82 | DeviceInfo | 
| 0x83 | LRButtonElapsedTime | 
| 0x90 | SerialFlashData | 
| 0xA0 | McuData | 
| 0xA8 | AttachmentData | 
| 0xA9 | AttachmentInfo | 
| 0xAA | InternalAttachmentRead | 
| 0xB0 | IndicatorLed | 
| 0xC0 | SensorData | 
| 0xD0 | BatteryVoltage | 
| 0xD8 | ExtDevRead | 
| 0xD9 | ExtDevInfo | 
ExtGripCommand
| Value | Description | 
| 0x01 | Inquiry | 
| 0x02 | CreateHidConnection | 
| 0x03 | DeleteHidConnection | 
| 0x04 | StartHidData | 
| 0x05 | StopHidData | 
| 0x06 |  | 
| 0x07 | GetFirmwareVersion | 
| 0x08 |  | 
| 0x91 | LoopbackTest | 
| 0x92 |  | 
| 0xA0 | SetUartClockTrim | 
Firmware
The firmware is stored inside the flash in Broadcom's PatchRAM format as follows:
| Offset | Size | Description | 
| 0x0 | 0x1000 | StaticSection | 
| 0x1000 | 0x1000 | FailsafeSection | 
| 0x2000 | 0x1000 | VolatileSection | 
| 0x3000 | 0x1000 | VolatileSectionBackup1 | 
| 0x4000 | 0x1000 | VolatileSectionBackup2 | 
| 0x5000 | 0x1000 | ShipmentInfo | 
| 0x6000 | 0x1000 | FactoryConfiguration | 
| 0x8000 | 0x1000 | UserCalibration | 
| 0x9000 | 0x7000 | Reserved | 
| 0x10000 | 0x18000 | DynamicSection1 | 
| 0x28000 | 0x18000 | DynamicSection2 | 
| 0x40000 | 0x40000 | Reserved | 
FailsafeSection
| Offset | Size | Description | 
| 0x0 | 0xFF4 | Reserved | 
| 0xFF4 | 0x8 | Signature | 
| 0xFFC | 0x4 | Ds2Offset | 
VolatileSection
| Offset | Size | Description | 
| 0x0 | 0x26 |  | 
| 0x26 | 0xFDA | Reserved | 
ShipmentInfo
| Offset | Size | Description | 
| 0x0 | 0x1 | Shipment | 
| 0x1 | 0xFFF | Reserved | 
FactoryConfiguration
| Offset | Size | Description | 
| 0x0 | 0x10 | IdentificationCode | 
| 0x10 | 0x2 | Reserved | 
| 0x12 | 0x1 | Type | 
| 0x13 | 0x1 | BoardRevision | 
| 0x14 | 0x7 | Reserved | 
| 0x1B | 0x1 | FormatVersion | 
| 0x1C | 0x4 | Reserved | 
| 0x20 | 0x18 | Cal1 | 
| 0x38 | 0x5 | Reserved | 
| 0x3D | 0x12 | Cal2 | 
| 0x4F | 0x1 | Reserved | 
| 0x50 | 0xD | Design | 
| 0x5D | 0x23 | Reserved | 
| 0x80 | 0x18 | Model1 | 
| 0x98 | 0x12 | Model2 | 
| 0xAA | 0x1 | Reserved | 
| 0xAB | 0x1 | AccelerometerAxisAssignment | 
| 0xAC | 0x1 | GyroscopeAxisAssignment | 
| 0xAD | 0x1 | MainAnalogStickAxisAssignment | 
| 0xAE | 0x1 | SubAnalogStickAxisAssignment | 
| 0xAF | 0x151 | Reserved | 
| 0x200 | 0x2 | BatteryVoltage | 
| 0x202 | 0xB7E | Reserved | 
| 0xD80 | 0x2 | TarragonVid | 
| 0xD82 | 0x2 | TarragonPid | 
| 0xD84 | 0x7C | Reserved | 
| 0xE00 | 0x100 | InspectionLog | 
Type
| Value | Description | 
| 0x01 | JoyLeft | 
| 0x02 | JoyRight | 
| 0x03 | SwitchProController | 
| 0x04 | (DeviceType 4) | 
| 0x05 | (DeviceType 5) | 
| 0x06 | Tarragon (DeviceType 6) | 
| 0x07 | LarkHvc1 | 
| 0x08 | LarkHvc2 | 
| 0x09 | LarkNesLeft | 
| 0x0A | LarkNesRight | 
| 0x0B | Lucia | 
| 0x0C | [12.0.0+] Lagon | 
| 0x0D | [13.0.0+] Lager | 
| 0x0E | [14.0.0+] (DeviceType 30) | 
| 0x21 | FiftyLeft (DeviceType 14) | 
| 0x22 | FiftyRight (DeviceType 18) | 
Cal1
SixAxisSensorCalibrationValue
| Offset | Size | Description | 
| 0x0 | 0x2 | Accelerometer0OffsetX | 
| 0x2 | 0x2 | Accelerometer0OffsetY | 
| 0x4 | 0x2 | Accelerometer0OffsetZ | 
| 0x6 | 0x2 | Accelerometer1GScaleX | 
| 0x8 | 0x2 | Accelerometer1GScaleY | 
| 0xA | 0x2 | Accelerometer1GScaleZ | 
| 0xC | 0x2 | Gyroscope0OffsetX | 
| 0xE | 0x2 | Gyroscope0OffsetY | 
| 0x10 | 0x2 | Gyroscope0OffsetZ | 
| 0x12 | 0x2 | Gyroscope78RpmX | 
| 0x14 | 0x2 | Gyroscope78RpmY | 
| 0x16 | 0x2 | Gyroscope78RpmZ | 
Cal2
MainAnalogStickCalibrationValue
| Offset | Size | Description | 
| 0x0 | 0x3 | AnalogStickCalXPositiveAndAnalogStickCalYPositive | 
| 0x3 | 0x3 | AnalogStickCalX0AndAnalogStickCalY0 | 
| 0x6 | 0x3 | AnalogStickCalXNegativeAndAnalogStickCalYNegative | 
SubAnalogStickCalibrationValue
| Offset | Size | Description | 
| 0x0 | 0x3 | AnalogStickCalX0AndAnalogStickCalY0 | 
| 0x3 | 0x3 | AnalogStickCalXNegativeAndAnalogStickCalYNegative | 
| 0x6 | 0x3 | AnalogStickCalXPositiveAndAnalogStickCalYPositive | 
Design
ControllerColor
| Offset | Size | Description | 
| 0x0 | 0x3 | MainColor (body color of controller in RGB Hex, see Joy-Con Colors) | 
| 0x3 | 0x3 | SubColor (button color of controller in RGB Hex, see Joy-Con Colors) | 
| 0x6 | 0x3 | 3rdColor (left grip color of controller in RGB Hex) | 
| 0x9 | 0x3 | 4thColor (right grip color of controller in RGB Hex) | 
DesignVariation
| Value | Name | 
| 0x0 | LuciaJ, LagerJ | 
| 0x1 | LuciaE, LagerE | 
| 0x2 | LuciaU, LagerU | 
Model1
SixAxisSensorHorizontalOffset
| Offset | Size | Description | 
| 0x0 | 0x2 | HorizontalOffsetX | 
| 0x2 | 0x2 | HorizontalOffsetY | 
| 0x4 | 0x2 | HorizontalOffsetZ | 
AnalogStickModuleParam
| Offset | Size | Description | 
| 0x0 | 0x3 | TypicalStrokeXAndTypicalStrokeY | 
| 0x3 | 0x3 | CenterDeadZoneSizeAndCircuitDeadZoneScale | 
| 0x6 | 0x3 | MinimumStrokeXPositiveAndMinimumStrokeYPositive | 
| 0x9 | 0x3 | MinimumStrokeXNegativeAndMinimumStrokeYNegative | 
| 0xC | 0x3 | CenterRangeXPositiveAndCenterRangeYPositive | 
| 0xF | 0x3 | CenterRangeXNegativeAndCenterRangeYNegative | 
Model2
UserCalibration
| Offset | Size | Description | 
| 0x0 | 0x10 | Reserved | 
| 0x10 | 0x16 | UserCal1 | 
| 0x26 | 0x1A | UserCal2 | 
| 0x40 | 0xFC0 | Reserved | 
UserCal1
UserCal2
Colors
HEX codes for the colors shown in the "Controllers" menu of the Switch UI can be found in a Joy-con SPI dump starting at offset 0x6050. Body color is first followed by button color and each is 3 bytes long. These values are able to be re-written with any HEX color value to make the Joy-cons show up as different colors in the UI. The following is a list of official HEX colors recovered from SPI dumps.
| Developer Kit Joy-Con | Release | Body HEX | Button HEX | 
| Black / ブラック | 2015.10.16 | #313131 | #0F0F0F | 
| Standard Retail Joy-Con Color | Release | Body HEX | Button HEX | 
| Gray / グレー | 2017.03.03 | #828282 | #0F0F0F | 
| Neon Red / ネオンレッド | 2017.03.03 | #FF3C28 | #1E0A0A | 
| Neon Blue / ネオンブルー | 2017.03.03 | #0AB9E6 | #001E1E | 
| Neon Yellow / ネオンイエロー | 2017.06.16 | #E6FF00 | #142800 | 
| Neon Green / ネオングリーン | 2017.07.21 | #1EDC00 | #002800 | 
| Neon Pink / ネオンピンク | 2017.07.21 | #FF3278 | #28001E | 
| Red / レッド | 2017.10.27 | #E10F00 | #280A0A | 
| Blue / ブルー | 2019.10.04 | #4655F5 | #00000A | 
| Neon Purple / ネオンパープル | 2019.10.04 | #B400E6 | #140014 | 
| Neon Orange / ネオンオレンジ | 2019.10.04 | #FAA005 | #0F0A00 | 
| White / ホワイト | 2021.10.08 | #E6E6E6 | #323232 | 
| Pastel Pink / パステルピンク | 2023.06.30 | #FFAFAF | #372D2D | 
| Pastel Yellow / パステルイエロー | 2023.06.30 | #F5FF82 | #32332D | 
| Pastel Purple / パステルパープル | 2023.06.30 | #F0CBEB | #373037 | 
| Pastel Green / パステルグリーン | 2023.06.30 | #BCFFC8 | #2D322D | 
| Special Edition Joy-Con Color | Release | Body HEX | Button HEX | 
| Nintendo Switch Gray Joy-Con / Nintendo Switch グレー | 2017.03.03 | #828282 | #0F0F0F | 
| Nintendo Switch Neon-Blue Left Joy-Con / Nintendo Switch ネオンブルー・ネオンレッド | 2017.03.03 | #0AB9E6 | #001E1E | 
| Nintendo Switch Neon-Red Right Joy-Con / Nintendo Switch ネオンブルー・ネオンレッド | 2017.03.03 | #FF3C28 | #1E0A0A | 
| Splatoon 2 Edition Neon-Green Left Joy-Con / スプラトゥーン2 | 2017.07.21 | #1EDC00 | #002800 | 
| Splatoon 2 Edition Neon-Pink Right Joy-Con / スプラトゥーン2 | 2017.07.21 | #FF3278 | #28001E | 
| Super Mario Odyssey Edition Red Joy-Con / スーパーマリオ オデッセイ | 2017.10.27 | #E10F00 | #280A0A | 
| Super Smash Bros. Ultimate Edition Gray Joy-Con / 大乱闘スマッシュブラザーズ | 2018.11.02 | #828282 | #0F0F0F | 
| Pokémon: Let's Go! Edition Eevee-Brown Left Joy-Con / ポケットモンスター Let's Go! イーブイ | 2018.11.16 | #C88C32 | #281900 | 
| Pokémon: Let's Go! Edition Pikachu-Yellow Right Joy-Con / ポケットモンスター Let's Go! ピカチュウ | 2018.11.16 | #FFDC00 | #322800 | 
| *Nintendo Labo Creators Contest Edition "Cardboard"-Colored Joy-Con | 2018. (...?) | #D7AA73 | #1E1914 | 
| **Dragon Quest XI S Lotto Edition Royal-Blue Joy-Con / ドラゴン クエスト XI S (ロト版) | 2019.09.27 | #1473FA | #00000F | 
| **Disney Tsum Tsum Festival Edition Neon-Purple Left Joy-Con / ディズニー ツムツム フェスティバル | 2019.10.10 | #B400E6 | #140014 | 
| **Disney Tsum Tsum Festival Edition Neon-Pink Right Joy-Con / ディズニー ツムツム フェスティバル | 2019.10.10 | #FF3278 | #28001E | 
| Animal Crossing: New Horizons Edition Pastel-Green Left Joy-Con / あつまれ どうぶつの森 | 2020.03.13 | #82FF96 | #0A1E0A | 
| Animal Crossing: New Horizons Edition Pastel-Blue Right Joy-Con / あつまれ どうぶつの森 | 2020.03.13 | #96F5F5 | #0A1E28 | 
| Fortnite Wildcat Edition Yellow Left Joy-Con / フォートナイト ワイルドキャット(山猫) | 2020.10.30 | #FFCC00 | #1A1100 | 
| Fortnite Wildcat Edition Dark-Blue Right Joy-Con / フォートナイト ワイルドキャット(山猫) | 2020.10.30 | #0084FF | #000F1E | 
| Mario Red × Blue Edition Red Joy-Con / マリオ レッド × ブルー | 2021.02.12 | #F04614 | #1E1914 | 
| Monster Hunter Rise Edition Gray Joy-Con / モンスターハンターライズ | 2021.03.26 | #818282 | #0E0F0F | 
| Fortnite Fleet Force Edition Dark-Blue Left Joy-Con / フォートナイト フリート フォース(力の艦隊) | 2021.06.04 | #0084FF | #000F1E | 
| Fortnite Fleet Force Edition Yellow Right Joy-Con / フォートナイト フリート フォース(力の艦隊) | 2021.06.04 | #FFCC00 | #1A1100 | 
| Legend of Zelda: Skyward Sword Edition Dark-Blue Left Joy-Con / ゼルダの伝説 スカイウォードソード | 2021.07.16 | #2D50F0 | #1E0F46 | 
| Legend of Zelda: Skyward Sword Edition Dark-Purple Right Joy-Con / ゼルダの伝説 スカイウォードソード | 2021.07.16 | #500FC8 | #00051E | 
| Nintendo Switch OLED Edition White Joy-Con / Nintendo Switch (有機ELモデル) ホワイト | 2021.10.08 | #E6E6E6 | #323232 | 
| Splatoon 3 OLED Edition Blue-Gradient Left Joy-Con / (有機ELモデル) スプラトゥーン3 | 2022.08.26 | #6455F5 | #28282D | 
| Splatoon 3 OLED Edition Neon-Yellow-Gradient Right Joy-Con / (有機ELモデル) スプラトゥーン3 | 2022.08.26 | #C3FA05 | #1E1E28 | 
| Pokémon: Scarlet × Violet OLED Edition Scarlet Left Joy-Con / (有機ELモデル) ポケットモンスター スカーレット・バイオレット | 2022.11.04 | #F07341 | #322D1E | 
| Pokémon: Scarlet × Violet OLED Edition Violet Right Joy-Con / (有機ELモデル) ポケットモンスター スカーレット・バイオレット | 2022.11.04 | #9650AA | #32322D | 
| Legend of Zelda: Tears of the Kingdom Edition Gold Joy-Con / (有機ELモデル) ゼルダの伝説 ティアーズ オブ ザ キングダム | 2023.04.28 | #D2BE69 | #32322D | 
| // *(Prize Awarded for Labo Contest - No Retail) // **(Available Japan Only) |